2011-11-01 8 views
5

Początkowo opracowałem swoją aplikację na system iOS 4, a teraz, gdy już jest iOS 5, postanowiłem opracować pakiet SDK dla systemu iOS 5, który prawdopodobnie spowodował awarię mojej aplikacji.Cel-C - Różnica w metodach uruchamiania aplikacji z iOS 4 na iOS 5?

Mam pasek pasek aplikacji z kontrolerem nawigacji w każdej karcie.

W iOS 4 wszystko, co było w metodzie -application:didFinishLaunchingWithOptions: zostało wykonane najpierw po uruchomieniu. Po wykonaniu tej metody załadowano kontroler widoku dla pierwszej karty.

Więc kiedy loguję mój proces aplikacji startup (uruchomiony symulator iOS 4.3) wygląda to tak:

-[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 

Teraz gdy loguję mój proces aplikacji startup (uruchomiony symulator dla iOS 5.0) wygląda następująco:

-[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 

Czy brakuje tu czegoś oczywistego? Wydaje mi się, że mamy dwie różne sytuacje startowe między systemem iOS 4 i iOS 5?

+0

Jeśli testujesz to wiele razy, czy wyniki są takie same? –

+0

Tak, wyniki są zawsze takie same. Czy obsługa plików .xib (plik MainWindow.xib w moim przypadku) różni się w systemie iOS 5 od systemu iOS 4? –

Odpowiedz

1

Dlaczego pomyślne uruchomienie aplikacji zależy od określonej sekwencji tych zdarzeń? W powyższych sekwencjach nie powinno być nic, co powodowałoby problemy, twój kod powinien być niepomny, jeśli chodzi o dokładną sekwencję startową.

Czy możesz podać kod, który wyjaśnia, dlaczego to powoduje problem?

+0

Inicjuję niektóre obiekty w metodzie '-application: didFinishLaunchingWithOptions:', od której zależy, należy zainicjować PRZED załadowaniem kontrolera widoku (SeminarsViewController) w pierwszej zakładce. Właśnie dlatego startup jest "pomyślny" (mój kod działa tak jak powinien) w iOS 4, ale ten sam kod działa inaczej i iOS 5. Więc jakoś zmieniły coś w stylu '-application: didFinishLaunchingWithOptions:' działa od iOS 4 do iOS 5. –

+1

Ahh ok. Chciałbym podłączyć kontroler widoku za pomocą kodu zamiast Konstruktora interfejsu, da to całkowitą kontrolę nad tworzeniem kontrolera widoku (i załadowaniem kolejnego widoku). –

+0

Ale dlaczego Mój kod zachowuje się inaczej w zależności od tego, czy działa na iOS 4 czy iOS 5? –

Powiązane problemy