iOS 视图控制器在退出的时候没有走dealloc,你需要做的事情
来源:互联网 发布:mac os cdr下载 编辑:程序博客网 时间:2024/04/29 12:39
这几天由于前台的ui没有给我图,所以有点闲,我一直在纠结内存优化的问题。
我昨天发现我的导航控制器在pop的时候居然没有走dealloc方法,我在leaks里面去运行,也没有发现内存泄漏的提示。但是作为一个合格的程序员一定不能允许出现这种情况。所以我开始 一步一步的查询。
归根结底,是因为当前控制器被某个对象强引用在控制器pop的时候count没有减为0,导致控制器的引用计数不为0,系统无法帮你释放这部分内存。
我控制器里面有通知,块比较是容易导致强引用,所以我就在这里面一句一句的去检查,结果在块里面发现了问题。我在块里面有一个地方居然调用self没有用他的弱引用形式,所以导致了self的count加一,最后直接导致控制器在pop的时候没有走dealloc这个方法。总结了一下控制器被强引用不走dealloc的原因无非就是三中情况:
一.block块使用不当。因为block会对方法中的变量自动retain一次。请检查控制器中block代码。(我的就是因为这没有走dealloc)
二.NSTimer没有销毁。在viewWillDisappear之前需要把控制器用到的NSTimer销毁。
三.控制器中的代理属性一定要是弱引用,不要强引用。 0 0
- iOS 视图控制器在退出的时候没有走dealloc,你需要做的事情
- iOS小记------ iOS 视图控制器在退出的时候没有走dealloc,你需要做的事情
- 控制器在退出的时候不执行dealloc方法
- iOS 控制器POP后dealloc方法不走,通知监听无法移除的问题
- https iOS端需要做的事情
- 需要做的事情
- iOS presentViewController两个视图控制器的时候返回根视图
- iOS程序退出的时候不执行dealloc函数的疑惑
- 如何在一个没有导航栏的控制器视图里面用模态视图弹出别的控制器视图
- iOS 开发 push进入一个视图控制器,返回的时候删除中间某一个视图控制器
- Android6.0动态权限需要你做的事情
- 本周需要做的事情
- 开发IOS推送功能客户端需要做的事情
- 伤心的时候,你在做什么?
- 昨天做的事情和今天需要做的事情
- 在我最需要你的时候,你在哪里?
- 你的第一个iOS应用(五) 实现视图控制器
- iOS视图控制器编程指南 --- 定义你的子类
- jquery开发自定义的插件总结
- Carthage使用中的注意事项
- Fresco正传(2):DraweeView分析
- 运用“虚短”“虚断”轻松搞定运算放大器
- 不用AJAX实现前台JS调用后台C#方法(小技巧)
- iOS 视图控制器在退出的时候没有走dealloc,你需要做的事情
- 异常:org.hibernate.cache.NoCachingEnabledException: Second-level cache is not enabled for usage [hiber
- LeetCode---Implement Queue using Stacks
- ubuntu下sublime text 3 及Package Control安装
- 编译原理(二) NFA的确定化及DFA的最小化的算法及C++实现
- [TFS]于TFS强制签入已被签出的文档
- Xamarin.Android关于Fragment(一)
- PHP empty isset is_null区别比较
- iOS 静态库.a文件的制作