iOS:如何调试“发送到解除分配的实例的消息”

时间:2013-12-17 01:28:15

标签: ios objective-c debugging ios7 xcode5

我的iOS应用程序出现问题。这是针对相关组件的票证:https://github.com/lxcid/LXReorderableCollectionViewFlowLayout/issues/52

但对于StackOverflow - 我的问题更为笼统。怎么去调试这样的东西?

我得到的唯一错误是:

2013-12-16 18:23:24.307 3rdRevolution[33315:70b] *** -[CFSet countByEnumeratingWithState:objects:count:]: message sent to deallocated instance 0x1336f850
(lldb) 

以下是xcode的截图:

cl.ly/SzXL

我确实发现LXReordableCollectionView通过注释掉它的用法来解决崩溃问题。但我仍然不知道为什么或如何解决它。并且注释掉代码来解决问题似乎并不是一个好方法..

建议?

谢谢!

2 个答案:

答案 0 :(得分:6)

  1. 如果它是您自己的自定义类,请在dealloc中放置一个NSLog。如果没有,则为您正在使用的类创建子类,使用[super dealloc]覆盖dealloc和NSLog。
  2. 弄清楚对象何时被完全解除分配。
  3. 弄清楚为什么它会被解除分配。

答案 1 :(得分:0)

我在“方案诊断”中启用了“僵尸”,并找出导致错误的类(它是视图控制器)。

它正在释放该类的一个已经释放的实例,这在ARC项目中看到很奇怪,所以让我感到困惑。

原来,我忽略了警告。我有一个应该返回值但没有的方法。

一旦我纠正了该错误,崩溃便停止了。