总之,我是一名NSZombies菜鸟。我刚刚开始尝试使用它们进行调试,因为直到现在,我已经能够解决所有内存问题而没有它们。
现在,我正在......
[UIImage isKindOfClass:]: message sent to deallocated instance 0x8095f10
有没有办法在我的代码中指向一行?我的意思是,这比仅仅获得崩溃/错误访问错误有了很大的改进,但这仍然只是将其缩小到某种UIImage内存问题。理想情况下,我希望它说“你在y类的第x行创建的UIImage在被解除分配后被发送了一条isKindOfClass消息。”
另外,我很确定在我的代码中没有任何地方我首先使用isKindOfClass发送到UIImage。 UIImage是否在其代码中的某处使用该方法?
编辑:更新了标签。无意中有一个旧问题的标签。
答案 0 :(得分:3)
使用Instruments在iOS模拟器中运行您的应用,然后选择Zombie选项。
重新创建导致问题的条件,然后您应该能够查看隐藏了系统符号的反向堆栈跟踪,它将直接转到代码中引用僵尸的位置。它可能不会告诉你它被解除分配的位置,但它肯定会帮助你缩小范围。
答案 1 :(得分:0)
作为一个菜鸟我自己,我只是提供我已经看到这个错误与僵尸打开时,我没有在离开视图控制器之前nillify我的代表。例如,如果我有someObject.delegate = self,我可以通过在viewWillDisappear中设置someObject.delegate = nil来避免此错误。
答案 2 :(得分:0)
在Xcode中对一个异常断点进行Slap并且它将捕获僵尸(以及更多其他异常,C ++和Objective-C),因为它会在引发异常时保留任何状态而不会超出Objective-C范围并{{1将所有范围都放入longjmp()
。
这项工作同时适用于模拟器和设备。我几乎有这个断点,我在任何项目中都放下了第一行代码。