【发布时间】:2011-11-16 00:31:09
【问题描述】:
我的申请有点混乱。
我如何检查一个对象是否在 iPhone 中被释放?
【问题讨论】:
-
你不会检查它,你最好以你知道你的对象是否被释放的方式管理内存
标签: iphone cocoa-touch memory-management
我的申请有点混乱。
我如何检查一个对象是否在 iPhone 中被释放?
【问题讨论】:
标签: iphone cocoa-touch memory-management
如果对象已被释放,则您无法访问其属性。
您可以使用 Profiler (NSZombies) 来检测哪些对象被释放然后被访问。
【讨论】:
抱歉,您正在尝试解决错误的问题。
如果您遵循一些简单的规则,则绝对不需要“找出”一个对象是否已被释放;你会知道的。
简单的规则是:
不要使用retainCount。如果对象已被释放(即其保留计数为零),那么您不能对对象执行任何操作,因为它不再存在!另外,即使它当前是一,那它不在自动释放池中并且在你下次查看时将是零,那又如何呢?
【讨论】:
启用僵尸时向对象发送任何消息就足够了。如果程序因为您向僵尸发送消息而崩溃,那么您知道!
如果您在仪器中启用了引用计数跟踪,那么您可以查看每个引用计数事件的每一帧,并找出引入无效引用计数偏移的位置。
【讨论】: