2011-11-01 10 views
5

Uygulamamı önce iOS 4 için geliştirdim ve şimdi iOS 5'in çıktığı şu anda iOS 5 SDK için geliştirmeye karar verdim.Objective-C - iOS 4'ten iOS 5'e uygulama başlatma yöntemlerinde fark var mı?

Her sekmede bir gezinme denetleyicisi olan bir sekme çubuğu uygulamasına sahibim.

iOS 4'te, -application:didFinishLaunchingWithOptions: yönteminde bulunan her şey, ilk başlatıldıktan sonra gerçekleştirilmiştir. Bu yöntem yürütüldükten sonra, ilk sekme için görünüm denetleyicisi yüklenmiştir. Ben (için simülatör iOS 4.3 çalıştıran) benim başlatma uygulaması sürecini oturum açtığınızda

Yani şuna benzer:

-[AcandoAppDelegate application:didFinishLaunchingWithOptions:] [Line 35] didFinishLaunchingWithOptions method running 
-[AcandoAppDelegate application:didFinishLaunchingWithOptions:] [Line 60] This should be executed first // And it does as it should 
-[AcandoAppDelegate applicationDidBecomeActive:] [Line 254] applicationDidBecomeActive method running 
-[SeminarsViewController viewDidLoad] [Line 58] 2 - viewDidLoad method running 
-[SeminarsViewController viewDidLoad] [Line 60] This should be executed second // Also as it should 
-[SeminarsViewController viewWillAppear:] [Line 123] 3 - viewWillAppear method running 
-[SeminarsViewController viewDidAppear:] [Line 173] viewDidAppear running 

Şimdi iOS 5.0 için simülatör çalışan (benim başlatma uygulaması sürecini oturum açtığınızda) o şuna benzer:

-[AcandoAppDelegate application:didFinishLaunchingWithOptions:] [Line 35] didFinishLaunchingWithOptions method running 
-[SeminarsViewController viewDidLoad] [Line 58] 2 - viewDidLoad method running 
-[SeminarsViewController viewDidLoad] [Line 60] This should be executed second // So this should be executed second but is executed first 
-[SeminarsViewController viewWillAppear:] [Line 123] 3 - viewWillAppear method running 
-[AcandoAppDelegate application:didFinishLaunchingWithOptions:] [Line 60] This should be executed first // And this is executed second but should be executed first 
-[AcandoAppDelegate applicationDidBecomeActive:] [Line 254] applicationDidBecomeActive method running 
-[SeminarsViewController viewDidAppear:] [Line 173] viewDidAppear running 

Am burada belirgin bir şey eksik? Benim için iOS 4 ile iOS 5 arasında iki farklı başlangıç ​​durumumuz var gibi görünüyor?

+0

Bunu birden çok kez test ederseniz, sonuçlar aynı mı? –

+0

Evet sonuçları her zaman aynı. Iphone 5 ile karşılaştırıldığında IOS 5 farklı .xib dosyaları (benim durumumda MainWindow.xib) ele? –

cevap

1

Uygulamanızın başarılı bir şekilde başlatılması neden bu olayların belirli bir sırasına bağlı? Yukarıdaki sekanslarda sorun çıkarmanıza neden olacak hiçbir şey olmamalıdır, kodunuz temelde yatan başlangıç ​​sırasına göre habersiz olmalıdır.

Bu durumun neden kaynaklandığını açıklamak için bir kod verebilir misiniz?

+0

Bazı nesneler başlatıyorum '-application: didFinishLaunchingWithOptions:' Bağımlı olduğum yöntem, ilk sekmede görünüm denetleyicisini (SeminarsViewController) yüklemeden ÖNCE başlatılmalıdır. Bu nedenle, başlatma "başarılı" (kodumun amaçlandığı gibi çalışıyor) ve iOS 4'te tam olarak aynı kod çalışıyor. IOS 5. Yani bir şekilde bir şekilde bir şeyleri değiştirdiler: -Uygulama: didFinishLaunchingWithOptions: iOS 4'ten iOS 5'e kadar çalışır. –

+1

Ahh tamam. Görünüm denetleyicinizi Arabirim Oluşturucu yerine bir kod ile bağladım, görüntü denetleyicisi oluşturulduğunda (ve sonraki görüntü yüklendiğinde) tam denetim sağlar. –

+0

Ama kodum iOS 4 veya iOS 5’te çalıştırılıyorsa neden farklı davranıyor? –