dav*_*ode 12 cocoa-touch objective-c uikit automatic-ref-counting
我正在评估切换到ARC(自动引用计数)和重构以应用于我的代码.在我必须弄清楚的事情中,有这样的:
如果ARC不允许显式释放对象,我该怎么办didReceiveMemoryWarning?目前,我使用该方法释放属于我的控制器的对象,并且可以通过惰性getter轻松检索:
- (void)didReceiveMemoryWarning {
[_foo release]; _foo = nil;
[super didReceiveMemoryWarning];
}
Run Code Online (Sandbox Code Playgroud)
和相对懒惰的吸气剂:
- (Foo *)foo {
if (_foo) {
return _foo;
}
return (_foo = [[Foo alloc] init]);
}
Run Code Online (Sandbox Code Playgroud)
在ARC中实现这样的"模式"似乎是不可能的...所以,我该怎么办?在ARC中,didReceiveMemoryWarning应被视为"已弃用"/无用吗?
dit*_*kin 20
ARC处理保留和释放代码,因此将_foo设置为nil足以允许ARC生成的代码执行发布.您没有明确发布,只需管理对象图,ARC生成的代码将在适当时执行发布.
有关详细信息,请阅读Apple的" 过渡到ARC发行说明"文档.
归档时间: |
|
查看次数: |
3863 次 |
最近记录: |