2011-03-11 33 views
6

¿Hay alguien más que tenga problemas con Xcode 4 donde se llama al viewDidLoad dos veces? He ejecutado el mismo proyecto en Xcode 3.2 y Xcode 4 y solo actúa en Xcode 4.Xcode 4 - viewDidLoad problema

+0

¿Se está llamando a su viewDidLoad dos veces solo para un UIViewController particular o para todos sus controladores de visualización? Además, ¿cómo sabe que se llama dos veces en el mismo control de visualización (puntos de interrupción, nslog)? Para asegurarse de que es el mismo UIViewController, puede hacer NSLog (@ "llamado dos veces% p", self) en viewDidLoad. El% p mostrará la dirección hexadecimal del objeto. – Sam

+0

Puntos de interrupción y declaraciones nslog. Solo ocurre en xcode 4, anoche descargué 3.2.6 y el proyecto funciona bien allí. Es solo mi rootviewcontroller cuando la aplicación se inicia por primera vez. Después de terminar las pruebas y llevarlas a la tienda de aplicaciones, probaré xcode 4 nuevamente y la declaración de registro que mencionaste. Realmente creo que es un xcode 4, es una aplicación universal con puntas separadas y en el lanzamiento están cargando un código completamente diferente, pero sucede en ambos y no hay nada nuevo en mi aplicación ipad que haya sido probado y aprobado por Apple. – Renegade428

+0

Me interesaría saber qué sucede con esos NSLogs cuando vuelve a abordar el problema. Buena suerte con todo. – Sam

Respuesta

0

Xcode es solo el IDE, no debería tener ninguna incidencia en lo que sucede cuando la aplicación se está ejecutando. Si hay una diferencia, parece más probable que esté compilando para diferentes versiones de iOS.

+0

Gracias por su respuesta. Sé que xcode es solo una idea ... soy el objetivo 4.2 y está construyendo con 4.3 sdk tanto en xcode 4 como en 3.2.6 y solo tengo problemas con xcode 4. Y aunque estuviera compilando para diferentes versiones, mi viewdidload no debería llamarse dos veces antes de que mi aplicación terminara de lanzar sin advertencias de memoria ni nada. – Renegade428

+2

Recomiendo presentar un informe de error en bugreporter.apple.com. –

4

Después de investigar esto en el Apple Developer forums, parece que en algunos casos Xcode 4 crea NIB Interface Builder con errores. El efecto es que rootViewController de la aplicación se carga dos veces, lo que realmente arruina las cosas. El mismo proyecto cargado en Xcode 3 no mostrará el problema.

En mi aplicación universal, solo afectó al iPad NIB. El iPhone estaba bien.

I fue capaz de resolver este problema por:

  • Extracción de la conexión RootViewController en Interface Builder (esto hace que la aplicación para cargar con window.rootViewController = nil)
  • En viewDidLoad para el controlador principal (el que estaba siendo cargado dos veces), entonces asigno manualmente appDelegate.window.rootViewController = self

Hasta ahora esto parece tener el efecto deseado.

0

¿Ha configurado la vista del controlador de vista? Tuve el mismo problema y me di cuenta de que no configuré la propiedad de vista.

- (void)viewDidLoad { 
    UIView *contentView = [[UIView alloc] initWithFrame: [[UIScreen mainScreen] applicationFrame]; 
    //add some stuff to contentView here 
    self.view = contentView; 
    [contentView release]; 
} 
0

Tuve el mismo problema. Y lo resolví Sucede cuando la memoria de tu aplicación recibió una advertencia de memoria.

Ponga un punto de interrupción en memoryDidReceiveWarning. Se llama y borra la memoria de objeto de clase. Por lo tanto, su viewDidLoad se llama dos veces, porque no tiene memoria en ese momento.