2011-11-01 10 views
5

Ho sviluppato la mia app inizialmente per iOS 4 e ora che iOS 5 è uscito ho deciso di sviluppare l'SDK per iOS 5 che ora sembra aver rotto la mia app.Objective-C - Differenza nei metodi di avvio dell'app da iOS 4 a iOS 5?

Ho un'applicazione di tabulazione con un controller di navigazione in ogni scheda.

In iOS 4 tutto ciò che era nel metodo -application:didFinishLaunchingWithOptions: è stato eseguito prima dopo l'avvio. Dopo che il metodo è stato eseguito, è stato caricato il controller della vista per la prima scheda.

Così, quando accedo il mio processo di avvio app (che esegue il simulatore per iOS 4.3) Sembra che questo:

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

Ora quando accedo il mio processo di avvio app (che esegue il simulatore per iOS 5.0) sembra che questo:

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

mi manca qualcosa di ovvio qui? Per me sembra che abbiamo due diverse situazioni di avvio tra iOS 4 e iOS 5?

+0

Se testate più volte, i risultati sono gli stessi? –

+0

Sì, i risultati sono sempre uguali. La gestione dei file .xib (MainWindow.xib nel mio caso) è differente in iOS 5 rispetto a iOS 4? –

risposta

1

Perché l'avvio riuscito della tua app dipende da una particolare sequenza di questi eventi? Non ci dovrebbe essere nulla in quelle sequenze sopra le quali causi il tuo rilascio, il tuo codice dovrebbe essere ignaro della esatta sequenza di avvio sottostante.

Puoi fornire del codice per spiegare PERCHE 'ti sta causando un problema?

+0

Sto inizializzando alcuni oggetti nel metodo '-application: didFinishLaunchingWithOptions:' su cui dipendo dovrebbe essere inizializzato PRIMA di caricare il controller di visualizzazione (SeminarsViewController) nella prima scheda. Ecco perché l'avvio è "successfull" (il mio codice funziona esattamente come previsto) in iOS 4, ma lo stesso codice funziona in modo diverso in iOS 5. Quindi in qualche modo hanno cambiato qualcosa nel modo in cui '-application: didFinishLaunchingWithOptions:' funziona da iOS 4 a iOS 5. –

+1

Ahh ok. Tenderei ad agganciare il tuo controller di visualizzazione tramite codice piuttosto che con Interface Builder, ti darà il controllo totale su quando viene creato il controller di visualizzazione (e successiva visualizzazione caricata). –

+0

Ma perché il mio codice si comporta diversamente a seconda che venga eseguito su iOS 4 o iOS 5? –