【发布时间】:2011-08-20 09:46:56
【问题描述】:
我有一个关于属性内存管理的一般性问题。目前,我总是使用没有任何明确声明相关 ivars 的属性。而且,对于每个保留或复制的属性,我都会在 dealloc 和 viewDidUnload 方法中释放其保留计数:
-(void)dealloc{
[self.myProperty release];
[self.myOutlet release];
[super dealloc];
}
- (void)viewDidUnload{
[super viewDidUnload];
self.myProperty = nil;
self.myOutlet = nil;
}
现在,我知道只有主视图保留的outlets和property应该在viewDidUnload中设置为nil,其余的属性应该在dealloc中释放。但是,嘿,为什么我必须为必须释放它的每个属性而烦恼——在 dealloc 中还是在 viewDidUnload 中?如果某个属性将被释放两次,那没关系,因为它不会通过向 nil 对象发送消息来使应用程序崩溃。将 release 放在两个地方(dealloc 和 unload)可以节省时间并防止以后在进行代码重构和忘记更改发布位置时出现错误。有任何批评者和大喊大叫吗? :)
【问题讨论】:
标签: objective-c memory-management properties