objective c - Cómo rastrear causa de SIGABRT
objective-c cocoa-touch (1)
SIGABRT aumenta cuando un objeto recibe un mensaje no implementado. ¿Cuántas advertencias tiene tu aplicación? Intente navegar a través de ellos y encuentre los que le advierten "es posible que algunos objetos no respondan a algún selector", si limpia su aplicación de todos estos, lo más probable es que funcione correctamente.
EDIT: respuesta de los comentarios a continuación que son muy útiles:
vale, aquí va la artillería pesada. ¿Has intentado utilizar los puntos de interrupción? Abra la sexta pestaña en su explorador de proyectos, en la esquina inferior izquierda, toque + -> Agregar punto de corte de excepción -> Listo. Esto agregará un controlador de excepción que detendrá tu aplicación en la llamada al método mismo que bloquea la aplicación.
EDITAR: a partir de xCode 5.0> Ya no es necesario especificar qué excepción va a capturar su punto de interrupción mientras se crea el punto de interrupción. Solo tienes que presionar + -> Añadir punto de interrupción de excepción y estás bien.
Estoy mostrando el código para este problema, por ejemplo, pero realmente mi pregunta es: ¿cómo se supone que debo rastrear y comprender los errores de SIGABRT? Leí esta pregunta: sigabrt sin mensaje de error , sin embargo, no creo que esto afecte a mi problema.
El ejemplo que mostraré a continuación obviamente no es un problema xib, y las anteriores veces que recibí SIGABRT parecían tener más que ver con las excepciones no controladas. He intentado usar Bt de GDB, pero esto no ayuda. ¿No hay un vertedero más completo para ver? También he usado NSZombie
, pero realmente no entiendo cómo usarlo, así que si esa es su respuesta, proporcione un enlace a la documentación sobre cómo se supone que debo obtener datos relevantes de ella.
Aquí está mi ejemplo: estoy tratando de usar Core Data. Mi proyecto no se había configurado originalmente con él, así que tuve que agregarlo manualmente, lo cual hice yendo a mi proyecto> Crear fases> Enlace binario con bibliotecas> haciendo clic en el signo más y agregando CoreData.framework
Luego creé mi modelo de datos yendo a Archivo> Nuevo> Modelo de datos. Creé bastantes atributos y eso es todo
Después de eso, agregué los métodos adecuados al delegado de la aplicación (lo hice creando un nuevo proyecto con Core Data y luego copié los métodos):
//code removed, as its not needed for the question/answer
Después de esto, intenté guardar un valor para el objeto gestionado (una vez más, el código se copió de la implementación predeterminada con un nuevo proyecto):
//code removed, as its not needed for the question/answer
Pero todo lo que obtengo cuando ejecuto el método addTime
es el error SIGABRT.