7

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

我的问题是:

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

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

或者

我应该像它一样多次释放它吗retainCount

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

谢谢你的帮助!

4

2 回答 2

78

不要使用 -retainCount。

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

您应该调用release与导致对象被保留的次数完全相同的次数。不会少(除非你喜欢泄漏),当然也不会更多(除非你喜欢崩溃)。

有关完整的详细信息,请参阅内存管理指南

于 2010-09-16T21:07:52.683 回答
2

自动释放使 retainCount 毫无意义。跟踪保留以及您是否拥有对象。学习并记住这些规则:http: //developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html#//apple_ref/doc/uid/20000994-BAJHFBGH

于 2010-09-16T21:28:20.313 回答