Storyboard ve ARC olmadan Xcode


116

yeni xcode-5 indirdim ve kullanmaya başladım.

Doğrudan film şeridi ve ARC dahil uygulama oluşturabiliriz, önceki sürümler gibi seçenek istemez.

Öyleyse sorum, xcode5'i ARC ve storyboard olmadan nasıl kullanabiliriz. storyboard dosyasını manuel olarak kaldırmamız gerekiyor mu? veya başka bir seçenek var mı?


3
Kimse buna gerçekten cevap veremez, ancak Apple'ın yaptığını düşünüyorum çünkü hem Storyboard'lar hem de ARC, Xcode ile veya Objective-C ile uygulama geliştirmenin geleceği. Xcode 5 hala bir beta olduğundan, bu yılın ilerleyen dönemlerinde destek ekleyebilirler ama bence bu olmayacak.
HAS

6
Film şeridi dosyasını manuel olarak kaldırın -fobjc-arcve proje ayarlarında derleyici bayrağını kaldırın .

19
Öncelikle programcılar tarafından kullanılan araçlarla ilgili sorular, bir şeyin 'en iyisini' veya 'alışveriş' önerilerini istememeleri koşuluyla , konuyla ilgili sorulardır . Bunu buna göre yeniden açtım.
Tim Post

1
Ancak burası bunu yapmak için uygun bir yer değil. Bunu anlayın.
MZimmerman6

3
Bunu NDA kapsamında yapan tek şey "Xcode 5" kısmıdır. gerçekte anlatılan herhangi bir şey Xcode'un önceki sürümlerinde yapılabilir, bu nedenle teknik olarak bu konuyu tartışmak ücretsizdir.
AtomRiot

Yanıtlar:


150

Boş bir uygulama ile bir proje oluşturun ve herhangi bir görüntü denetleyicisini ekleyin (TestViewController'ı buraya ekledim)

   - (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;
 }

ARKI KALDIRMA ADIMLARI

1) inşa ayar seti ise Otomatik Referans Sayımı için NO .

////////////////////////////////////////////////// /////////////////////////SON//////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ///////////////////////

Eğer Zaten Uygulamada kullanılan düzenlendi varsa storyboard ve ARC sonra

HİKAYE PANOSUNU KALDIRMA ADIMLARI

1) Main.storyboard dosyasını projenizden kaldırın .

2) Denetleyiciniz için xib ile yeni dosyalar ekleyin, derlenen kaynaklara derleme aşamalarında eklenmemişse, oraya manuel olarak ekleyin.

3) sökün Ana film şeridi dosya temel adı gelen plist .

4) appdelegate didFinishLaunchingWithOptions dosyasını değiştirin ve ekleyin:

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

[self.window makeKeyAndVisible];

aynen şöyle:

  - (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;
}


Şimdi, yukarıdaki örnekte, bellek yönetimini manuel olarak yönetmeniz gerekir;

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

 [test release]; 

ARKI KALDIRMA ADIMLARI

1) inşa ayar seti ise Otomatik Referans Sayımı için NO .


7
Artık "boş proje" seçeneği yok mu? Film şeridini her kullanmaya başlayacağımı sanmıyorum.
Sulthan

1
Hedefinizin "Ana arayüz" ayarını yeni kök <View Controller> olarak değiştirdiğinizden emin olun.
Paul Brady

haklısınız @Sulthan bunu boş proje ile yapabiliriz, ancak bunlar zaten görünüm tabanlı bir uygulama oluşturmuşsam değişikliklerdir. (bazı storyboard kodunu appDelegate dosyasından manuel olarak kaldırmalıyız) boş uygulamadayken içine yeni kod eklemeliyiz :)
PJR

Film şeridini geri kaldırma seçeneğini ekleyecek bir komut dosyasıyla karşılaştım: stackoverflow.com/a/19792955/329928
Chris Leyva

UINavigationController * nav neden otomatik olarak yayınlanmadı? ve [UIWindow ayırmada] _window kullanmalıyız?
hariszaman

44

Film şeridi dosyasını silmek yerine Boş Uygulama şablonuyla yeni bir proje oluşturabilirsiniz. Böylece film şeridi dosyası oluşturulmasını önleyebilirsiniz.

Film şeridini çıkarmak için aşağıdaki adımları kullanın: görüntü açıklamasını buraya girin

  1. Boş Uygulama şablonuyla yeni bir proje oluşturun.
  2. (Örnek: Yeni viewController ekle LoginViewController)
  3. Değişim didFinishLaunchingWithOptionsiçinde AppDelegate.maşağıda belirtilen dosyada.

Değişmek:

#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;
}

ARC'yi Kaldır: Yapı Ayarına Git -> Amaç-C Otomatik Referans Sayma -> HAYIR


1
Vaov! Bir çekicilik gibi çalışır ve kabul edilen cevaptan çok daha basittir. Sadece tüm referansları LoginViewControllerkendi kontrolcümün adıyla eşleşecek şekilde değiştirmem gerekti.
JohnK

11

yeni proje oluştur

! [Yeni Proje Oluşturun]

Bilgi'deki Ana film şeridi dosya temel adını kaldırın

// Info'daki Ana film şeridi dosya temel adını kaldırın

Bu Kodu appdelegate'te Ekleyin

- (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;
}

Ardından film şeridinizi otomatik olarak kaldırın.

Lütfen bunu deneyin ... başarıyla yürütüldü. Teşekkürler


5

ShortCut: Tercih ederim

Xcode4'te Storyboard ve ARC olmadan projeyi oluşturun ve ardından bu projeyi xcode5'te açın.


1
Sadece bunun için Xcode'un eski bir sürümünü saklamak buna değmez. Yeni bir proje oluşturmayı, Storyboard şeylerinden kurtulmayı, appDelegate'e UIWindow somutlaştırmasını eklemeyi ve daha sonrası için bir şablon proje olarak kaydetmeyi tercih ederim.
kervich

3

Xcode 4, yeni bir proje oluşturduğunuzda "Hikaye Tahtalarını Kullan" onay kutusuna sahipti. Eski Xcode 4 uygulama şablonlarını (XML dosyaları) alıp Xcode 5'e dönüştürmek mümkündür. Bu şekilde, film şeridi isteyip istemediğinizi seçmenize izin veren eski şablonları geri alırsınız.


Sizin için çalışan her şeyi yapan bir komut dosyası yazdım: https://github.com/jfahrenkrug/Xcode4templates


Komut dosyasını çalıştırdıktan sonra, "Yeni Proje" ekranında bir "Xcode 4" bölümüne sahip olacaksınız:

görüntü açıklamasını buraya girin

Ve sonra - Eyvah! - sevdiğiniz seçimleri geri alırsınız:

görüntü açıklamasını buraya girin

Bu komut dosyasını kullanmak için http://developer.apple.com/ios adresinden Xcode 4 .app paketinin bir kopyasına ihtiyacınız olacak .


1
Ancak, bu şablonlar eskidir ve -registerClass: forCellReuseIdentifier: gibi mevcut tüm yeni değişikliklerden yararlanmamaktadır.
mahboudz

@mahboudz Bu doğru. Bu işlevsellik sizin için önemliyse, ince ayar yapmanız gerekir. Elbette Apple'ın, Xcode'un gelecekteki bir sürümünde Storyboard'lardan çıkma seçeneğini geri getireceğini umuyorum.
Johannes Fahrenkrug

1
Umarım. Sizin gibi ben de Storyboard'u daha küçük uygulamalarda kullanıyorum, çoğunlukla hızlı TableView geliştirmesi nedeniyle, ancak daha büyük uygulamalarda Storyboard büyük bir acı. Kaydırmaktan, segment kimliklerini hatırlamaya (Storyboard'lar ve kaynak dosyalar arasında #defines veya const NSString * kullanmanın bir yolunu eklemelidirler), git uyuşmazlığı çözümlemesi yapmaya ve daha fazlasına kadar, Storyboard'lar sadece hepsi değil ve hepsini bitir.
mahboudz

bu V / A okları.
John Riselvato

1
@JohnRiselvato Haklısın :) İğrenç oklar artık gitti :)
Johannes Fahrenkrug

0

Bir Tavsiyem var:

  1. İlk: Projemi XCode 4.6 ile oluşturuyorum (Çünkü bu sürüm XCode 5'e en yakın sürümdür).
    • Tabii ki XCode 4.6 ile ARC, Storyboard kullanmayı veya kullanmamayı seçebilirsiniz.
  2. İkincisi: Bundan sonra XCode 5 ile Projemi açacağım. => Xcode 5'in projenin nonARC kullandığını anlayacağını düşünüyorum ve tabii ki Storyboard'a sahip değil.

Umarım projeniz işe yarar! : D

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.