iOS 内存中的ViewController释放
2015-10-13 22:48
465 查看
程序开发中,使用到ViewController是常事。但是有时候因为使用的不当,导致其不能被自动回收,从而引起一些隐含的Bug。或者从编码的角度来说,让人觉得不舒服。因为内存中有些东西没有CleanUp。
下面列举几点:
1)ViewController的self释放的三种情况
1.1 delegate没有置空nil
1.2 block循环引用,应当在block中使用weakSelf来引用:__weak typeof(self) weakSelf = self;
1.3 NSTimer必须先停止(invalidate)然后nil掉。
2)[controller.view removeFromSuperview]; 从父控件上移除自己,引用-1
3)controller.view = nil; 释放View
4)controller = nil; 释放ViewController
下面列举几点:
1)ViewController的self释放的三种情况
1.1 delegate没有置空nil
1.2 block循环引用,应当在block中使用weakSelf来引用:__weak typeof(self) weakSelf = self;
1.3 NSTimer必须先停止(invalidate)然后nil掉。
2)[controller.view removeFromSuperview]; 从父控件上移除自己,引用-1
3)controller.view = nil; 释放View
4)controller = nil; 释放ViewController
相关文章推荐
- iOS支付
- iOS 键盘回收实现步骤
- iOS开发常用的第三方类库
- IOS中打开应用实现检查更新的功能
- ios9+xcode7 适配笔记
- iOS单例设计模式
- IOS请求H5页面、要求自定义agent判断是电脑、安卓还是iPhone登录
- iOS:quartz2D绘图小项目(涂鸦画板)
- 适配IOS9中间遇到的一些问题
- iOS代理设计模式
- iOS之OC随笔-类别(分类)Demo
- iOS 获得通讯录中联系人的所有属性--b
- 第 二 十 九 天 :监 控 软 件 之 nagios
- iOS 后台运行实现 --备用
- Xcode7.0.1(ios9)的部分适配问题
- iOS数据存取
- iOS多线程常用类说明--备用参考
- iOS之OC随笔-Foudation框架下集合的相互转换
- iOS 地图
- iOS 创建单例的两种方法