关于XCode自带Debug Memory Graph监测对象释放情况

Xcode8的调试技能又增加了一个黑科技:Memory Graph。简单的说就是可以在运行时将内存中的对象生成一张图。但是我基本不看,嘻嘻!我主要看的是当我从A界面push到B界面,又pop回A界面后,A界面上所有的对象,这时候我会检查有没有没有被释放掉的对象

Paste_Image.png

点击这个就可以看了,具体的对象列表,看你的左手边

开发老大有时候会要求app运行时的内存大小,而造成app占用内存过大的原因我总结了几点

  1. 首先就是循环引用导致的controller 无法销毁 (每个控制器都需要写delloc,良好的代码风格)
  1. 有的时候控制器销毁了,但是里面的视图也会存在循环引用,导致一些视图无法销毁
  2. 控制器销毁时没有移除通知
  3. 过多的绘制图片,调用c的方法
  4. 等等......不一一列举 以上大家平时容易遇到的

就以上问题,1,2是最让人头疼的,那就是找出循环引用的地方!WTF!!笨的方法就是一行一行看,一行一行注释、打开!

秋豆莫代!废话说了一堆!上图

Paste_Image.png

这个是控制器B里面我放了一个循环引用(已经提示了,自行忽略!),pop回去的时候delloc 一定不会走的

3秒后,背景红了,证明block执行了,看下右边的对象列表,嗯!没错 两个控制器

Paste_Image.png

现在我要pop回去了

Paste_Image.png

还是两个控制器的,这就证明 B控制器没有被释放,delloc根本就没走

假如B控制器里还有其他的视图存在循环引用,那么我们就可以直接通过Debug Memory Graph来检查哪个视图没有被释放掉,就不用一行一行来注释来,这为我们的开发节约了很大一部分时间!

当然,良好的代码风格也是避免一些低级错误发生的很好的习惯!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 15,095评论 4 61
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,587评论 30 472
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 178,825评论 25 709
  • 文字:若木菡 摄影:若木菡 曾经的繁华 已成过眼烟云 曾经的盛放 已成落红凋零 泥也拥抱 水也疼惜 启程吧 只为奔...
    若木菡阅读 903评论 23 47
  • 上课时间:2017.5.1 一、放松疗法——训练 感同身受——共情 亲密关系——心灵的通道 二、放松训练的三种有效...
    Daisy叶子阅读 1,827评论 0 0

友情链接更多精彩内容