最近不怎么忙想着测试一下项目是否有内存泄漏。先用Xcode
的静态分析(Product ->Analyze)
了一波,发现还好。没啥大的问题。紧接着用Instruments
跑了一下,好多红叉,一脸懵逼!
Instruments
用法网上有好多我这里就不做过多的介绍。
如果在选择call tree
后,可能你会发现定位不到代码泄漏的位置,只是显示16进制的数据。此时需要你在Xcode
中检查是否有dSYM File
生成,如下图所示选择第二项DWARF with dSYM File.

定位内存泄漏的地方也很奇怪,我压根不觉得那里有内存泄漏。用Instruments
看了一下vc、model、viewModel
的引用计数都是正常的。各个类的dealloc
方法也都走了。瞬间脑壳都大了。之后又用Xcode
自带另一个工具(不知道叫啥,测试了下)如图:


如果发现有紫色的!
号就表示有内存泄漏,点一下就可以看到具体的地方。但是发现我的依旧是找不到泄漏的地方是在哪里。
慢慢排除之后终于确定内存泄漏是RACSubject
导致的。
具体的分析点这里
接着有测试了一波,统统OK!
所以日后再写RAC的时候,必须要保证信号发送完成或者发送错误。
网友评论