【发布时间】:2011-04-13 10:45:08
【问题描述】:
我正在制作一款 iPhone 游戏。我想释放所有已分配或保留的对象。在dealloc 函数中,我释放了所有此类对象,但后来我意识到有时我最终会释放尚未分配的对象。所以我想我需要在发布它之前检查它的retainCount 是否大于零。
我的问题是:
我是否只检查retainCount 是否大于零然后释放它?
if([bg retainCount]!=0)
{
[bg release];
}
或
我是否应该像retainCount一样多次发布它
while([bg retainCount]!=0)
{
[bg release];
}
感谢您的帮助!
【问题讨论】:
-
任何对象的
retainCount与您无关。它是作为调试帮助的,但仅此而已。生产代码永远不应该依赖它。 -
顺便说一句——并不是说它使代码正确——但是,根据定义,
retainCount永远不会返回 0,因为在发生这种情况时对象已经被释放..... -
另外,尝试使用“构建和分析”(即 Clang 分析器)。它可能会指出你哪里出了问题。
标签: iphone memory-management cocos2d-iphone retain retaincount