我是Objective-C(和stackoverflow)的新手,我对有关属性的最佳实践略微转过身。dealloc中的属性:release然后设置为nil?或者简单地释放
我的理解是,当你彻底完成一个属性时,你可以通过释放它们来避免错误,然后立即设置为零,以便随后的消息也返回nil而不是异常。
[myProperty release],myProperty = nil;
但是,当涉及dealloc'复制'和'保留'属性是否有任何需要做到这一点?还是做了一个简单的
[myProperty发布] 剪了吗?另外,我是否正确无需在dealloc中释放'assign'属性?
谢谢!
+1,释放是你所需要的,但我会提醒不要在'dealloc中使用'self.myProperty = nil' '(它可以激发KVO方法并通知观察者尝试访问部分解除分配的对象......) – 2010-08-04 03:13:54
正如戴夫所说,目前推荐的(苹果)实践并不是使用访问器在dealloc中分配零(因此释放)。它不仅可以激发KVO方法,而且set访问器可能已被一个子类覆盖。 – JeremyP 2010-08-04 08:33:38
现在更老更明智了......最佳实践似乎是在viewDidUnload中使用self.myProperty = nil作为IB插座属性。这允许viewController重新建立视图层次,如果它已被低内存拆除。 – averydev 2011-08-31 06:55:07