iOS memory debug
Xcode 8 以后出现的 memory debugger 是一个很不错的调试工具, 可以将项目中常见的 retain cycle
很容易的发现.
点击图示中下方的按钮 , 显示 memory debugger 面板
- 左侧是堆区对象的分配情况
- 中间是具体对象的引用关系
- 右侧是对象的辅助说明
使用方法
- 紫色感叹号,表明此处有
runtime issue
, 基极可能是一处内存泄露问题 - 左下方 是一个
filter
, 可以过滤你想要的对象: 只显示泄露对象或者指定条件的对象 - 点击左侧有紫色感叹号的泄露对象, 可以在中间显示该对象的所有引用关系
- 如中间面板的循环引用, 点击一条连线(表示引用关系), 可以在右侧面板查看具体的 连线引用 是 强引用还是弱引用 , 还有其
source
和destination
- 点击具体的对象,可以右击,查看该对象定义的地方, 可以查看其内存描述
Retain Cycle
典型的循环引用, 我们只需要打破循环就可以
- 强制将一个
node
环节置为nil
- 将某个
node
的引用改为 弱引用, 或使用weak dance