使用Xcode查找错误 - 尝试插入nil值

时间:2012-05-31 09:22:39

标签: iphone ios xcode debugging xcode4.3

我在我的应用中遇到一个随机错误,导致它崩溃。我面临的问题是XCode没有告诉我崩溃发生在哪里只有以下信息。有人能告诉我如何找到我可能在代码中找到问题的位置吗?它必须在应用程序崩溃的同一时间崩溃,它总是显示如下。

  

*由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [__ NSCFDictionary   setObject:forKey:]:尝试插入nil值(键:0)'   * 第一次抛出调用堆栈:(0x381e48bf 0x37d301e5 0x381e47b9 0x381e47db 0x381516bb 0x9237b 0x91121 0x8f0c5 0x8abc1 0x37b9d 0x8b68f   0x3550850f 0x381b0577 0x3813c0cf 0x3547c3fb 0x3547dc2b 0x8d005   0x3814322b 0x34495 0x32e31 0x3372d 0x30a59 0x3813e435 0x7b1df 0x7b88d   0x79e25 0x31ca650f 0x31ca5f01 0x31c8c4ed 0x31c8bd2d 0x37f12df3   0x381b8553 0x381b84f5 0x381b7343 0x3813a4dd 0x3813a3a5 0x37f11fcd   0x31cba743 0x89e8b 0x24a4)终止调用throw   异常(LLDB)

5 个答案:

答案 0 :(得分:17)

您是否启用了异常断点?单击Breakpoint Navigator左下角的 + ,然后选择添加异常Breakpont

enter image description here

您可以右键单击断点进行编辑...

enter image description here

这将导致代码在发生错误时停止。

答案 1 :(得分:10)

我经常在我的项目中使用一个解决方案,设置一些特殊的断点。 要做到这一点:

  1. 打开XCode
  2. 转到“查看 - >导航器 - >显示断点导航器”
  3. 现在添加一些新的断点,点击“+”按钮:

    • 添加例外断点
    • 使用符号[NSException raise]
    • 添加符号断点
    • 使用符号objc_exception_throw
    • 添加符号断点

    再次运行您的项目,应用程序将停在导致您出现问题的行上。

答案 2 :(得分:0)

错误很明显。在您的任何一行中,您要为字典设置一些对象,您的密钥是nill,这是不允许的

答案 3 :(得分:0)

你的问题是你正在使用setObject:forKey方法到NSDictionary只是使它成为NSMutableDictionary然后尝试这个方法你不能为NSDictionary赋值,就像你正在尝试它只为NSMutableDictionary。

我希望你能明白我的意思。

答案 4 :(得分:0)

试试这个:

if([myDictionary objectForKey:@"string"]!= nil && [myDictionary objectForKey:@"string"]!= Nil) { }