我发布了多少次分配或保留的对象?

时间:2010-09-16 21:03:20

标签: iphone memory-management cocos2d-iphone retain retaincount

我正在制作iPhone游戏。我想释放已分配或保留的所有对象。在dealloc函数中,我释放所有这些对象,但后来我意识到有时候我还是在尚未分配对象时最终释放对象。所以我想在发布之前我需要检查retainCount是否大于零。

我的问题是:

我只是检查retainCount是否大于零然后释放它吗?

if([bg retainCount]!=0)
{
  [bg release];
}

我应该像retainCount

那样多次发布它
while([bg retainCount]!=0)
{
  [bg release];
}

感谢您的帮助!

2 个答案:

答案 0 :(得分:77)

不要使用-retainCount。

对象的绝对保留计数毫无意义。

您应该调用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