如果我使用的是合成属性,那我为什么不简单地说:
self.property = nil;
这将释放引用计数,并确保我没有悬空指针。
看起来很简单,但我看到99%的代码似乎都是这样做的:
[property release];
property = nil;
是的,在大多数情况下,它们都是属性。 我得到了可怕的感觉我错过了什么? 当我忘记放“自我”时就像是一样。在一些属性面前,并想知道为什么它崩溃: - )
答案 0 :(得分:9)
如果你试图在dealloc方法中的任何地方清除属性的值,那么self.property = nil;
是最好的方法。它将为您处理所有内存管理任务,有助于防止任何问题。
如果你使用的是dealloc
方法,那么发布ivar的最佳方式就是辩论,但推荐使用[property release];
,因为调用self.property
可能会产生次要影响。在dealloc
方法中,无需调用property = nil;
。