self.prop =无; 与[prop release]; prop = nil;

Jon*_*onB 4 objective-c

如果我使用的是合成属性,为什么我不能简单地说:

self.property = nil;
Run Code Online (Sandbox Code Playgroud)

这将释放引用计数,并确保我没有悬空指针.

看起来很简单,但我看到99%的代码似乎都是这样做的:

[property release];
property = nil;
Run Code Online (Sandbox Code Playgroud)

是的,在大多数情况下,它们是属性.我得到了可怕的感觉我错过了什么?当我忘记放"自我"时就像是一样.在一些属性面前,并想知道为什么它崩溃:-)

kub*_*ubi 9

如果你试图在dealloc方法中的任何地方清除属性的值,那么这self.property = nil;是最好的方法.它将为您处理所有内存管理任务,有助于防止任何问题.

如果你使用的是dealloc方法,那么释放ivar的最佳方式是争论,但[property release];往往被推荐,因为调用self.property可能会产生次要影响.在该dealloc方法中,property = nil;不需要调用.

  • 有一点需要注意; `self.property = nil;`将触发任何KV观察者,而直接访问则不会.无论哪种方式都有效,但哪一方是合适的是意见问题. (4认同)