多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