我正在制作iPhone游戏。我想释放已分配或保留的所有对象。在dealloc
函数中,我释放所有这些对象,但后来我意识到有时候我还是在尚未分配对象时最终释放对象。所以我想在发布之前我需要检查retainCount
是否大于零。
我的问题是:
我只是检查retainCount
是否大于零然后释放它吗?
if([bg retainCount]!=0)
{
[bg release];
}
或
我应该像retainCount
while([bg retainCount]!=0)
{
[bg release];
}
感谢您的帮助!
答案 0 :(得分:77)
对象的绝对保留计数毫无意义。
您应该调用release
与导致保留对象完全相同的次数。不会少(除非你喜欢泄漏),当然,没有更多(除非你喜欢崩溃)。
有关详细信息,请参阅Memory Management Guidelines。
答案 1 :(得分:2)
Autorelease使retainCount毫无意义。跟踪保留和&你是否拥有一个物体。学习与研究请记住以下规则:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html#//apple_ref/doc/uid/20000994-BAJHFBGH