pet*_*ine 7 uiviewcontroller didreceivememorywarning ios viewdidunload ios6
在新的iOS 6中,viewDidUnload不推荐使用,我们已被指示使用它didReceiveMemoryWarning来管理UIViewController实例和子类中的对象.将nils分配给内部的UIView didReceiveMemoryWarning类似于内部的方式同样有效viewDidUnload吗?
我问这个是因为这两种方法似乎有所不同.似乎didReceiveMemoryWarning不能保证viewDidLoad再次调用以重新实例化任何必要的UIViews.
我怀疑在iOS 6中,内存管理完成后无需手动解除分配UIView.请帮助我了解在理解UIViewController的生命周期时我错过了什么.
Eik*_*iko 13
我首选的方法现在如下:
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
if (self.isViewLoaded && !self.view.window) {
self.view = nil;
}
// Do additional cleanup if necessary
}
Run Code Online (Sandbox Code Playgroud)
请注意,测试self.isViewLoaded是必不可少的,否则访问视图会导致加载 - 即使WWDC视频也会错过.
如果您对子视图的其他引用是弱引用,则不必在此处将它们取消,否则您也希望将它们设置为nil.
你应该viewDidUnload完全摆脱,每个代码都应该移动到适当的位置.无论如何,无法保证在iOS 6之前调用它.
| 归档时间: |
|
| 查看次数: |
3964 次 |
| 最近记录: |