【发布时间】:2017-04-24 23:54:49
【问题描述】:
我正在尝试创建现有应用程序的框架,该框架可以作为模块添加到任何其他应用程序。在该应用程序的早期版本中,创建框架并将其添加到演示应用程序以测试它是否有效,我没有任何问题。使用较新版本的应用程序时,我遇到了问题:
2017-04-21 13:59:02.238333-0400 XXX[8320:3762763] * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[__NSArrayM insertObject:atIndex: ]: 对象不能为 nil' *** 首先抛出调用堆栈: (0x1868c2fd8 0x185324538 0x1867a4888 0x1010c3948 0x18c9f1f9c 0x18ca09a28 0x18cb8e2a0 0x18caa8c4c 0x18caa88b4 0x18caa8818 0x18c9ef158 0x189bdf274 0x189bd3de8 0x189bd3ca8 0x189b4f360 0x189b763c0 0x189b76e8c 0x1868709a0 0x18686e628 0x18686ea74 0x18679ed94 0x188208074 0x18ca57130 0x100084860 0x1857ad59c) libc++abi.dylib:以 NSException 类型的未捕获异常终止
关于如何追溯嵌入式框架内的错误有什么建议吗? 它只发生在应用程序的主视图控制器上,不会发生在从这些主视图控制器访问的任何二级视图控制器上。
我浏览了旧版本和新版本的嵌入式框架的代码,我没有发现任何主要的不同,逐行检查了整个代码。
有什么建议吗?
【问题讨论】:
-
查看崩溃日志的堆栈跟踪。
-
从异常看来,您正在将对象插入到未初始化的数组中。或者将一个 nil 对象插入到数组中。需要知道是什么事件导致异常发生以进一步帮助
-
堆栈跟踪没有显示任何东西,除了 main 中的崩溃。
-
我检查了 insertObject,但我没有在所有代码中的任何地方使用它。我对故障排除不是很熟悉,但我只能说错误来自我在应用程序中使用的嵌入式框架。
-
在您的演示应用程序中将 .framework 替换为框架项目(通过拖放)。首先构建框架目标,然后构建演示应用目标。现在应该可以调试到框架中了。注意:您必须在演示应用程序中设置断点并通过步进调试到框架中。如果我没记错的话,框架代码中的断点只有在你已经调试到项目之后才有效。
标签: ios xcode frameworks