我正在制作一款iPhone游戏。我想释放已分配或保留的所有对象。在dealloc
函数中,我释放了所有这样的对象,但后来我意识到有时我最终会在尚未分配对象时释放对象。所以我想我需要检查其retainCount
是否大于零或不释放它之前。我释放分配或保留的对象多少次?
我的问题是:
难道我只是检查是否retainCount
大于零,然后再释放?
if([bg retainCount]!=0)
{
[bg release];
}
或
我应该释放它多次作为其retainCount
while([bg retainCount]!=0)
{
[bg release];
}
感谢您的帮助!
任何对象的'retainCount'都是**您的业务**。它在那里作为一种调试手段,但仅此而已。生产代码永远不应该依赖它。 – Sven 2010-09-16 21:11:00
顺便说一句 - 不是它使代码正确 - 但根据定义,'retainCount'永远不会返回0,因为该对象已被释放的时间发生..... – bbum 2010-09-16 21:14:22
此外,请尝试使用“构建&分析“(即Clang分析器)。它可能会指出你出错的地方。 – 2010-09-17 00:18:14