我在异步事件中有大型项目,有时我有错误 [__ nsarraym insertObject:atindex:]:对象不能为nil ,但是我还没有想到在哪里扔这个错误。如何捕获此错误?我在我进行操作插入操作的地方做出断言:atindex,nothing ..
这是堆栈:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
*** First throw call stack:
(0x34c352a3 0x32f4597f 0x34b7f8d9 0xc48db 0xc3ced 0xc3b41 0x1178d9 0x148aed 0x103cfd 0x102fc9 0x101f95 0x35f25595 0x35f7a13b 0x35f7a081 0x35f79f65 0x35f79e89 0x35f795c9 0x35f794b1 0x35f67b93 0x35f67833 0xd820b 0x35fc8275 0x3604aea9 0x326efa6f 0x34c0a5df 0x34c0a291 0x34c08f01 0x34b7bebd 0x34b7bd49 0x350b82eb 0x35f5a301 0x62e45 0x62de0)
libc++abi.dylib: terminate called throwing an exception
检查代码崩溃的位置的好方法是:
1)在Xcode中获取断点选项卡。
2)单击底部的" "按钮。
3)添加异常断点
a)在"休息"选项卡中选择:
i) on Throw
ii) on Catch
和构建和r联合国
4)这些断点将为您的应用程序完全崩溃90%的时间。
希望这对您有所帮助。:)
有时如果找不到抛出的例外。只需尝试在您的项目中添加这些symbolic breakpoints
即可。然后运行
objc_exception_throw malloc_error_break [NSexception升高]
在您的Xcode
中goto Product -> Debug -> Create Symbolic Breakpoint
。输入Symbol
中上面提到的每个断点,然后按Done
,或者可以通过在左下角的Breakpoint navigator (cmd + 6)
中创建您可以找到+
符号,请单击+
,然后单击Add symbolic breakpoint
。现在尝试运行,它将使您进入其崩溃的特定行。
认为您需要从数组中处理空值。它为我工作类似:
if ( array ! = nil ) {
NSLog(@"name is nil");
} else {
// addobject to array
}
显然,您插入的对象不应为零。检查它!