多less次我释放分配或保留的对象?

我正在做一个iPhone游戏。 我想释放已分配或保留的所有对象。 在dealloc函数中,我释放了所有这样的对象,但是后来我意识到有时候我还没有分配对象时就会释放对象。 所以我想我需要检查其retainCount是否大于零或不释放它之前。

我的问题是:

我只是检查如果retainCount大于零,然后释放它?

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

要么

我应该释放它多less次的retainCount

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

谢谢你的帮助!

不要使用-retainCount。

对象的绝对保留数是没有意义的。

您应该调用release的次数与您保留该对象的次数完全相同。 没有(除非你喜欢泄漏),当然,没有更多(除非你喜欢崩溃)。

有关详细信息,请参阅内存pipe理指南 。

Autorelease使retainCount毫无意义。 跟踪保留和你是否拥有一个对象。 研究并记住这些规则: http : //developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html#//apple_ref/doc/uid/20000994-BAJHFBGH