如何找到带有自动释放消息的对象?

Posted

技术标签:

【中文标题】如何找到带有自动释放消息的对象?【英文标题】:how to find objects with autorelease message? 【发布时间】:2009-10-06 11:14:47 【问题描述】:

释放自动释放池时,我的应用程序崩溃。原因似乎是带有自动释放消息的对象在释放池之前的某个时间发送了释放消息,因此应用程序会因已释放的对象而崩溃。

因此我想找出哪些对象有待处理的自动释放消息,以便我可以平衡该对象的保留..释放/自动释放消息

【问题讨论】:

【参考方案1】:

如果您不了解“NSZombieEnabled”,您肯定需要检查一下 - 说明是 here

它不会告诉你哪些对象在自动释放池中,但它会告诉你哪些对象被过度释放。

简而言之:

1)在 Xcode 项目的可执行文件组中双击一个可执行文件。

2)单击“参数”选项卡。

3)在“要在环境中设置的变量:”部分中,创建一个名为“NSZombieEnabled”的变量并将其值设置为“YES”。

【讨论】:

谢谢,我用了你的方法,了解了对象的类。这帮助我缩小了可能对象的范围。

以上是关于如何找到带有自动释放消息的对象?的主要内容,如果未能解决你的问题,请参考以下文章

iOS自动释放池_原理_如何工作

何时释放带有“自动释放”的对象?

自动释放池

如何保护对象免受自动释放?

如何查找匹配对象:-[CFArray _cfTypeID]:发送到已释放实例的消息

从 NSArray 返回的自动释放对象?