Xcode tanpa Storyboard dan ARC


116

saya telah mengunduh xcode-5 baru dan baru mulai menggunakannya.

Kita dapat membuat aplikasi secara langsung termasuk storyboard dan ARC, tidak meminta opsi seperti versi sebelumnya.

Jadi, pertanyaan saya adalah bagaimana kita bisa menggunakan xcode5 tanpa ARC dan storyboard. kami harus menghapus file storyboard secara manual? atau apakah ada pilihan lain.


3
Tidak ada yang benar-benar dapat menjawab ini, tetapi saya pikir Apple melakukannya karena Storyboards dan ARC adalah masa depan dalam mengembangkan aplikasi dengan Xcode atau di Objective-C. Karena Xcode 5 masih beta, mungkin mereka menambahkan dukungan untuk itu akhir tahun ini tapi saya pikir itu tidak akan terjadi.
HAS

6
Hapus file storyboard secara manual, dan hapus tanda -fobjc-arccompiler di pengaturan proyek.

19
Pertanyaan tentang alat yang terutama digunakan oleh pemrogram sangat banyak tentang topik , asalkan mereka tidak meminta yang 'terbaik' dari sesuatu atau rekomendasi 'belanja'. Saya telah membuka kembali ini sesuai.
Tim Post

1
Tapi ini bukan tempat yang tepat untuk melakukannya. Pahamilah itu.
MZimmerman6

3
satu-satunya hal yang membuat ini di bawah NDA adalah bagian kata "Xcode 5". apa pun yang benar-benar dijelaskan dapat dilakukan pada versi Xcode sebelumnya sehingga secara teknis topik ini bebas untuk didiskusikan.
AtomRiot

Jawaban:


150

Buat proyek dengan aplikasi Kosong dan Tambahkan viewcontroller apa pun (saya menambahkan TestViewController di sini)

   - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
 {
   self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
   // Override point for customization after application launch.
   TestViewController *test = [[TestViewController alloc]     initWithNibName:@"TestViewController" bundle:nil];
   UINavigationController *nav = [[UINavigationController alloc]  initWithRootViewController:test];
   self.window.rootViewController = nav;
   [self.window makeKeyAndVisible];
   return YES;
 }

LANGKAH UNTUK MENGHAPUS ARC

1) Dalam pengaturan build, atur Penghitungan Referensi Otomatis ke NO .

//////////////////////////////////////////////// /////////////////////////AKHIR//////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// ///////////////////////

Jika Anda telah Membuat Aplikasi dengan storyboard dan ARC maka

LANGKAH UNTUK MENGHAPUS PAPAN KISAH

1) Hapus file Main.storyboard dari proyek Anda.

2) Tambahkan file baru dengan xib untuk pengontrol Anda, jika tidak ditambahkan dalam sumber yang dikompilasi dalam fase build, tambahkan di sana secara manual.

3) Hapus nama dasar file storyboard utama dari plist .

4) Ubah file appdelegate didFinishLaunchingWithOptions dan tambahkan:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] ;

[self.window makeKeyAndVisible];

seperti :

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] ;

     // Override point for customization after application launch.

     TestViewController *test = [[TestViewController alloc]     initWithNibName:@"TestViewController" bundle:nil];
     UINavigationController *nav = [[UINavigationController alloc]  initWithRootViewController:test];
     self.window.rootViewController = nav;
     [self.window makeKeyAndVisible];

     return YES;
}


Sekarang, dalam contoh di atas Anda harus mengelola manajemen memori secara manual seperti,

 self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 

 [test release]; 

LANGKAH UNTUK MENGHAPUS ARC

1) Dalam pengaturan build, atur Penghitungan Referensi Otomatis ke NO .


7
Apakah tidak ada lagi opsi "proyek kosong"? Saya tidak berpikir saya akan mulai menggunakan storyboard.
Sulthan

1
Pastikan untuk mengubah pengaturan "Antarmuka utama" Target Anda ke root baru <View Controller>.
Paul Brady

Anda benar @Sulthan kita bisa melakukannya dengan proyek kosong, tetapi ini adalah perubahan jika saya sudah menyusun aplikasi berbasis tampilan. (kami harus menghapus beberapa kode storyboard secara manual dari file appDelegate) sementara dalam aplikasi kosong kami harus menambahkan kode baru di dalamnya :)
PJR

Saya menemukan skrip yang akan menambahkan opsi untuk menghapus storyboard kembali: stackoverflow.com/a/19792955/329928
Chris Leyva

mengapa UINavigationController * nav tidak dirilis secara otomatis? dan kita harus menggunakan _window di [UIWindow alokasi]?
hariszaman

44

Daripada menghapus file storyboard, Anda dapat membuat proyek baru dengan template Empty Application. Sehingga Anda dapat menghindari pembuatan file storyboard.

Gunakan langkah-langkah berikut untuk menghilangkan storyboard: masukkan deskripsi gambar di sini

  1. Buat proyek baru dengan template Empty Application.
  2. Tambahkan viewController baru (Contoh: LoginViewController)
  3. Ubah file didFinishLaunchingWithOptionsdalam AppDelegate.mseperti yang ditentukan di bawah ini.

Mengubah:

#import "LoginViewController.h"

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];

    LoginViewController *loginVC = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    UINavigationController *navigationController = [[UINavigationController alloc]  initWithRootViewController:loginVC];

    self.window.rootViewController = navigationController;
    [self.window makeKeyAndVisible];

    return YES;
}

Hapus ARC: Pergi ke Build Setting -> Objective-C Automatic Reference Counting -> NO


1
Wow! Bekerja seperti pesona dan jauh lebih sederhana daripada jawaban yang diterima. Saya hanya harus memastikan untuk mengubah semua referensi LoginViewControlleragar sesuai dengan nama pengontrol saya sendiri.
JohnK

11

buat proyek baru

! [Buat Proyek baru]

Hapus nama basis file storyboard utama di Info

// hapus nama dasar file storyboard utama di Info

Tambahkan Kode Ini Di appdelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];

    LoginViewController *loginVC = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    UINavigationController *navigationController = [[UINavigationController alloc]  initWithRootViewController:loginVC];

    self.window.rootViewController = navigationController;
    [self.window makeKeyAndVisible];

    return YES;
}

Kemudian hapus storyboard Anda secara otomatis.

Silakan Coba ini ... berhasil Dieksekusi. Terima kasih


5

ShortCut: Saya Lebih Suka

Buat proyek tanpa Storyboard dan ARC di xcode4 dan kemudian buka proyek itu di xcode5.


1
Menyimpan versi Xcode yang lebih lama hanya untuk itu tidak sepadan. Saya lebih suka membuat proyek baru, menyingkirkan hal-hal Storyboard, menambahkan Instansiasi UIWindow di appDelegate dan menyimpannya sebagai proyek template untuk nanti.
kervich

3

Xcode 4 memiliki kotak centang "Gunakan Papan Cerita" saat Anda membuat proyek baru. Anda dapat mengambil template aplikasi Xcode 4 lama (file XML) dan mengonversinya menjadi Xcode 5. Dengan begitu, Anda mendapatkan kembali template lama yang memungkinkan Anda memilih apakah ingin storyboard atau tidak.


Saya menulis skrip yang melakukan semua itu untuk Anda: https://github.com/jfahrenkrug/Xcode4templates


Setelah menjalankan skrip, Anda akan memiliki bagian "Xcode 4" di layar "Proyek Baru":

masukkan deskripsi gambar di sini

Dan kemudian - Aduh! - Anda mendapatkan kembali pilihan yang Anda sukai:

masukkan deskripsi gambar di sini

Anda memerlukan salinan bundel Xcode 4 .app dari http://developer.apple.com/ios untuk menggunakan skrip ini.


1
Namun, template tersebut sudah lama dan tidak memanfaatkan semua perubahan baru yang tersedia, seperti -registerClass: forCellReuseIdentifier :.
mahboudz

@ mahbutik Itu benar. Anda perlu menyesuaikannya jika fungsionalitas itu penting bagi Anda. Tentu saja saya berharap Apple akan mengembalikan opsi untuk menyisih dari Storyboards di rilis Xcode mendatang.
Johannes Fahrenkrug

1
Saya berharap begitu. Seperti Anda, saya menggunakan Storyboard di aplikasi yang lebih kecil, sebagian besar karena pengembangan TableView yang cepat, tetapi di aplikasi yang lebih besar, Storyboard adalah masalah utama. Dari menggulir, hingga mengingat ID segue (mereka harus menambahkan cara untuk memanfaatkan #defines atau const NSString * antara Storyboards dan file sumber), hingga melakukan resolusi konflik git, dan banyak lagi, Storyboard bukanlah segalanya dan akhiri semua.
mahboudz

panah V / A itu.
John Riselvato

1
@JohnRiselvato Anda benar :) Anak panah menjengkelkan sudah hilang sekarang :)
Johannes Fahrenkrug

0

Saya punya Tip:

  1. Yang Pertama: Saya membuat proyek saya dengan XCode 4.6 (Karena versi ini paling dekat dengan XCode 5).
    • Tentunya dengan XCode 4.6, Anda dapat memilih menggunakan atau tidak menggunakan ARC, Storyboard.
  2. Kedua: Setelah itu saya akan membuka Proyek saya dengan XCode 5. => Saya rasa Xcode 5 akan mengerti bahwa proyek itu menggunakan nonARC, dan tentu saja, tidak memiliki Storyboard.

Saya harap proyek Anda akan berhasil! : D

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.