所以我收到了这个错误(如下图所示)。当我收到此错误时发生的事情是通过我的核心数据数据库,并根据我收集的电池统计数据平均结果。这工作正常,直到我休息,然后回来,插入它,它开始得到这个错误。我有一个异常断点,但除了图像中的崩溃之外,它仍然没有显示任何其他内容。
任何人都知道我应该做什么?
xcode 5.0版
让我知道我是否可以发布其他任何可以帮助找出造成这种情况的因素!
答案 0 :(得分:8)
对于任何EXC_BAD_ACCESS
错误,您通常会尝试向已发布的对象发送消息。追踪这些内容的最佳方式是使用NSZombieEnabled。
这可以通过永远不会实际释放一个对象,但将其包装为“僵尸”并在其中设置一个标志,表示它通常会被释放。这样,如果您再次尝试访问它,它仍然知道在发生错误之前它是什么,并且通过这些信息,您通常可以回溯以查看问题所在。
当调试器有时会抓取任何有用的信息时,它特别有助于后台线程。
非常重要但是,您需要100%确保这只是在您的调试代码中,而不是您在XCode之外测试的任何代码。因为什么都没有发布,你的应用程序将泄漏,泄漏和泄漏。为了提醒我这样做,我把这个日志放在我的appdelegate:
if (getenv("NSZombieEnabled"))
NSLog(@"NSZombieEnabled!");
如果您需要帮助查找确切的行,Build-and-Run。当应用程序崩溃时,调试器会向您显示确切的行,并与NSZombieEnabled结合使用,您应该能够确切地找到发布后正在访问的对象的原因和类型。
答案 1 :(得分:0)
有时,快速解决方法是从设备中删除您的应用并再次运行。如果这有效,则意味着您更改了核心数据模型或类似内容。
答案 2 :(得分:0)
当我从Firebase工作者调用createMessage函数并整体返回Firebase文档时,发生了这种情况。 firebase文档不应作为一个整体返回,这是一种不好的编码习惯,相反,您应该获取文档并对其进行解析,然后从中获取所需的基本类型,然后将其返回。希望这对将来可能会遇到此问题的人有所帮助。