Pregunta

Durante la carga de mi aplicación cacao, mi programa falla con el mensaje EXC_BAD_ACCESS.El seguimiento de la pila no es útil.¿Alguna pista sobre cómo puedo encontrar el problema?

¿Fue útil?

Solución

He visto ocasiones en las que esto puede suceder cuando intentas acceder a un objeto que no retuviste correctamente, por lo que no apunta a una copia válida de tu objeto o apunta a un objeto de otro tipo.Su mejor opción es colocar puntos de interrupción temprano y analizar los objetos a medida que avanza en el inicio usando po e imprimir en gdb.

Otros consejos

Esto suele ser indicativo de un error de gestión de memoria.

Asegúrese de que todas sus declaraciones de puntos de venta sigan las mejores prácticas:

@interface MyClass : MySuperclass {
    UIClass *myOutlet;
}
@property (nonatomic, retain) IBOutlet UIClass *myOutlet;
@end

Este formato garantiza que podrá gestionar la memoria correctamente en cualquier plataforma con cualquier superclase.

Marque cualquier awakeFromNib métodos para garantizar que no esté liberando objetos en exceso, etc.

Una nueva respuesta a un viejo hilo...en XCode 4, la forma más efectiva de diagnosticar las excepciones EXC_BAD_ACCESS es usar Instrumentos para perfilar su aplicación (desde XCode, haga clic en Producto/Perfil y elija Zombies).Esto le ayudará a identificar los mensajes enviados a objetos desasignados.

Para agregar:La razón más importante del fracaso de desanimación es olvidar "regresar a sí mismo"; de la entrada de una clase personalizada.Duele mucho :(

Verifique el registro de la consola (Aplicaciones/Utilidades/Console.app).Cuando el programa falla al iniciarse y hay algún problema con la inicialización, a menudo escribe algunos mensajes de error útiles allí, antes de fallar.

Ésta es una posible razón.Hay un objeto IBOutlet que no se está inicializando y se invoca un mensaje en estado nulo.El seguimiento de la pila podría verse así:

#0    0x90a594c7 in objc_msgSend
#1    0xbffff7b8 in ??
#2    0x932899d8 in loadNib
#3    0x932893d9 in +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:]
#4    0x9328903a in +[NSBundle(NSNibLoading) loadNibFile:externalNameTable:withZone:]
#5    0x93288f7c in +[NSBundle(NSNibLoading) loadNibNamed:owner:]
#6    0x93288cc3 in NSApplicationMain
#7    0x00009f80 in main at main.mm:17

Dado que el seguimiento de la pila no es útil, deberá revisar el código para encontrar el error.Si por alguna razón no puede establecer puntos de interrupción al principio de su ejecución, intente insertar algún Debugger();llamadas que irán al depurador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top