Estou mostrando o código para este problema, por exemplo, mas realmente a minha pergunta é: como eu deveria rastrear e entender os erros do SIGABRT? Eu li esta pergunta: sigabrt sem mensagem de erro , no entanto, eu não acho que isso diz respeito ao meu problema.
O exemplo que mostrarei abaixo, obviamente, não é um problema xib, e os tempos anteriores para obter o SIGABRT parecem ter mais a ver com exceções não tratadas. Eu tentei usar o bt
do GDB, mas isso não ajuda. Não há um dump mais abrangente para visualizar? Eu também usei o NSZombie
, mas eu realmente não entendo como usá-lo, então se essa é a sua resposta, por favor forneça um link para a documentação sobre como eu devo obter dados relevantes dele.
Aqui está o meu exemplo: estou tentando usar o Core Data. Meu projeto não foi originalmente configurado com ele, então eu tive que adicioná-lo manualmente, o que eu fiz indo ao meu projeto> Fases de Construção> Vincular Binário com Bibliotecas> clicando no sinal de adição e adicionando CoreData.framework
Em seguida, criei meu modelo de dados indo em File> New> Data Model. Eu criei alguns atributos e é isso
Depois disso, adicionei os methods adequados ao delegado do aplicativo (fiz isso criando um novo projeto com Core Data e depois copiando os methods):
//code removed, as its not needed for the question/answer
Depois disso, tentei salvar um valor no object gerenciado (mais uma vez, código copiado da implementação padrão com um novo projeto):
//code removed, as its not needed for the question/answer
Mas tudo que consigo quando executo o método addTime
é o erro SIGABRT.
O SIGABRT aumenta quando um object recebe uma mensagem não implementada. Quantos avisos seu aplicativo tem? Tente navegar por eles e encontrar aqueles que o avisam “algum object pode não responder a algum seletor”, se você limpar o aplicativo de todos eles, provavelmente o funcionará corretamente.
EDIT: resposta dos comentários abaixo, que são muito úteis:
ok, aqui vai artilharia pesada – você já tentou usar breakpoints? Abra a sexta aba no seu explorador de projetos, no canto inferior esquerdo, toque em + -> Adicionar ponto de interrupção de exceção -> Concluído. Isso adicionará um manipulador de exceção que interromperá seu aplicativo na própria chamada de método que trava o aplicativo.
EDIT: A partir de xCode 5.0> Você não precisa mais especificar qual exceção é seu ponto de interrupção vai capturar enquanto o ponto de interrupção está sendo criado. Você só precisa apertar + -> Adicionar breakpoint de exceção e você é bom.