ARC下 pop到Rootview 中间controller的内存控制
来源:互联网 发布:网络语言的利与弊 编辑:程序博客网 时间:2024/05/20 02:30
问题:在APP编写过程中,通常会使用popToRootviewController直接回到根视图,中间的视图控制器内存并没有被释放。
如上图,控制器A push 出B,B push出C, C又push出D,但是在DController中进行操作后pop回到A,在此情景下,控制器B和C里的内存不会释放,不走dealloc方法,
如果B和C加载高内存使用控件,如地图类,视频类,内存会一直被占,反复多次后,APP crash。
解决方法,在D控制器中,当需要popToRoot的时候,增加父视图控制器空间释放,在B或者C中直接手动释放占内存的成员:
- (void)popBack{
NSArray *temArray =self.navigationController.viewControllers;
for(UIViewController *temVCin temArray){
if ([temVC isKindOfClass:[BPSportViewController class]]) {
BPSportViewController *VC = (BPSportViewController *)temVC;
VC.mapView.showsUserLocation =NO;
VC.mapView.userTrackingMode =MKUserTrackingModeNone;
[VC.mapView.layerremoveAllAnimations];
[VC.mapViewremoveAnnotations:VC.mapView.annotations];
[VC.mapView removeOverlays:VC.mapView.overlays];
[VC.mapViewremoveFromSuperview];
VC.mapView.delegate =nil;
VC.mapView = nil;
}
}
[self.navigationControllerpopToRootViewControllerAnimated:YES];
}
内存优化前与后对比:
优化前:
优化后:
- ARC下 pop到Rootview 中间controller的内存控制
- pop到指定Controller的三个方法
- ARC下的内存泄漏
- ARC下的内存管理
- ARC下的内存管理
- ARC下的内存泄漏
- ARC 下的内存泄露
- ARC下的内存管理
- 获得activity的rootview
- arc下容易忽略的内存问题
- ARC 下内存泄露的那些点
- ARC 下内存泄露的那些点
- ARC 下内存泄露的那些点
- 非ARC下的内存释放
- ARC下需要注意的内存管理
- ARC下需要注意的内存管理
- ARC 下内存泄露的那些点
- ARC下可能的内存泄露
- 微信公众号支付教程
- idea unresolved plugin
- #ifdef #if defined #ifndef和#if !defined区别
- 超全面的JavaWeb笔记day23<AJAX>
- [LeetCode]14. Longest Common Prefix
- ARC下 pop到Rootview 中间controller的内存控制
- Web过滤器总结
- 入门 Python 要多久?
- 干货 | 深度学习之损失函数与激活函数的选择
- 机器学习(18)之支持向量机原理(三)线性不可分支持向量机与核函数
- 机器学习(18)之支持向量机原理(三)线性不可分支持向量机与核函数
- 干货 | 数据挖掘中的十大实用方法,可能你并不一定都熟悉!
- ORA-01795: maximum number of expressions in a list is 1000 SQL异常
- Android 上层RecoverySystem类