想知道有经验的人是否可以对此进行更多解释。我见过……的例子
[view release];
view = nil;
....在(void)dealloc中。
有什么区别,一个比另一个好? 最好的方法是什么?
在进行 retainCount 测试时,我个人看到 nil 将计数从 3 降至 0,但 release 仅将其从 3 降至 2。
最佳答案
你看到的大概是这些:
1) [foo release];
2) self.bar = nil;
3) baz = nil;
正在释放对象,通过实例变量
foo
访问它。实例变量将成为一个悬空指针。这是dealloc中的首选方法。正在将
nil
分配给 self 上的属性bar
,这实际上将释放该属性当前保留的任何内容。如果您有属性的自定义 setter ,请执行此操作,它应该清理的不仅仅是支持属性的实例变量。将用 nil 覆盖引用对象的指针
baz
,但不会释放该对象。结果是内存泄漏。永远不要这样做。
关于iPhone - dealloc - Release vs. nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1458178/