我正在使用带有
功能的NSOutlineView- (BOOL)outlineView:(NSOutlineView *)outlineView
isGroupItem:(id)item
定义所以它给出了组行GUI外观。当我添加根项目时,它工作正常。当我将项添加到root的子数组并展开它时,它工作正常。如果我收缩该项目,则会记录以下错误:
[NSCFTimer copyWithZone:]: unrecognized selector sent to instance
如果通过切换到另一个应用程序停用应用程序窗口,我也会收到EXC_BAD_ACCESS错误。我使用调试器试图找到我可能在我的一个函数中出错的地方,但堆栈跟踪只显示我没有创建的函数(RunCurrentEventLoopInMode,CFRunLoopRunSpecific,handleWindowNeedsDisplay等)有没有人知道我的错误在哪里(s)可能是?
答案 0 :(得分:4)
听起来像物体过早死亡。当稍后使用相同的指针分配新对象时,你会得到“无法识别的选择器发送到实例”异常,然后某些东西试图向旧对象发送一条消息(在所示示例中,转世是一个NSTimer并且消息尝试了发送上一个对象是copyWithZone:
)。当对象只是垃圾内存时,你会遇到EXC_BAD_ACCESS
崩溃。
通过在启用Zombies仪器的仪器下运行您的应用来调试此功能。该对象将成为一个僵尸对象,而不是死亡。当某些东西试图向僵尸发送一条消息时,僵尸会呻吟(比喻说),它会在乐器的时间轴中显示为旗帜。您可以单击该标志中的按钮以查看对象的历史记录,包括其所有保留和释放。