2011-11-01 11 views
5

Desarrollé mi aplicación inicialmente para iOS 4 y ahora que salió iOS 5, decidí desarrollar para iOS 5 SDK, que ahora parece haber roto mi aplicación.Objective-C - ¿Diferencia en los métodos de inicio de aplicaciones de iOS 4 a iOS 5?

Tengo una aplicación de barra de pestañas con un controlador de navegación en cada pestaña.

En iOS 4, todo lo que estaba en el método -application:didFinishLaunchingWithOptions: se ejecutó primero después del inicio. Después de que se ejecutó ese método, se cargó el controlador de vista para la primera pestaña.

Así que cuando me conecto mi proceso de aplicación de inicio (que ejecuta el simulador para IOS 4.3) que se parece a esto:

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

Ahora, cuando me conecto mi proceso de aplicación de inicio (que ejecuta el simulador para iOS 5.0) que se parece a esto:

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

me estoy perdiendo algo obvio aquí? Para mí, parece que tenemos dos situaciones de inicio diferentes entre iOS 4 e iOS 5.

+0

Si prueba esto varias veces, ¿los resultados son los mismos? –

+0

Sí, los resultados son los mismos siempre. ¿El manejo de archivos .xib (MainWindow.xib en mi caso) es diferente en iOS 5 en comparación con iOS 4? –

Respuesta

1

¿Por qué el inicio exitoso de su aplicación depende de una secuencia particular de estos eventos? No debe haber nada en las secuencias arriba de las cuales se emite, su código debe ser ajeno a la secuencia de inicio subyacente exacta.

¿Puede darnos algún código para explicar por qué esto le está causando un problema?

+0

Estoy inicializando algunos objetos en el método '-application: didFinishLaunchingWithOptions:' de los que dependo deben inicializarse ANTES de cargar el controlador de vista (SeminarsViewController) en la primera pestaña. Es por eso que la startup es "exitosa" (mi código funciona como estaba previsto) en iOS 4, pero exactamente el mismo código funciona de manera diferente en iOS 5. Así que de alguna manera han cambiado algo en el modo '-application: didFinishLaunchingWithOptions:' funciona desde iOS 4 a iOS 5. –

+1

Ahh ok. Tiendo a conectar tu controlador de vista a través de código en lugar de Interface Builder, te dará control total sobre cuándo se crea el controlador de vista (y la vista posterior cargada). –

+0

¿Pero por qué mi código se comporta de manera diferente dependiendo de si se ejecuta en iOS 4 o iOS 5? –