我已经看到代码(可能是Apple自己的示例代码)以这样的方式编写,它在dealloc中释放ivar并在viewDidUnload中设置属性.
例如
- (void)viewDidUnload
{
self.navigationController = nil;
}
- (void)dealloc
{
[_navigationController release];
}
Run Code Online (Sandbox Code Playgroud)
为什么他们在两个地方?另外,为什么将nil设置为一个并释放另一个.似乎self.property = nil会处理所有事情,因为它会释放并将ivar设置为nil.
你是对的:你确实可以self.property = nil在任何地方做,包括dealloc.唯一的缺点是,如果setter方法做的事情比释放ivar更复杂,你可能最终会尝试访问已经发布的其他字段等.
至于为什么你还要发布插座viewDidUnload,这是一个内存优化.由于您发布的内容viewDidUnload是在再次加载视图时将重新实例化的内容,因此释放它们会在内存不足的情况下释放内存.
| 归档时间: |
|
| 查看次数: |
1151 次 |
| 最近记录: |