杏仁丶的iOS学习专题iOS开发进阶征服iOS

iOS检测循环引用

2016-05-31  本文已影响3770人  佟瑾年

Xcode的Insruments 工具集可以很方便的检测循环引用。为了测试效果,我们在一个测试用的ViewController中填入以下代码,该代码中的firstArray,和secondArray相互引用了对方,构成了循环引用。

- (void)viewDidLoad {
[super viewDidLoad];
NSMutableArray *firstArray = [NSMutableArray array];
NSMutableArray *secondArray = [NSMutableArray array];
[firstArray addObject:secondArray];
[secondArray addObject:firstArray]; 
 }

在Xcode的菜单栏选择“Product”-->“Profile”,然后选择“Leaks”,在单击右下角的“Choose”按钮开始检测。点击运行如下图所示。

psb.png

这时候iOS模拟器会运行起来,我们在模拟器里面进行一些界面的切换操作。稍等几秒钟就可以看到Instrunments检测到了我们这次的循环引用。Instrunments中会用红色的x来表示内存泄露的产生,
如下图所示。

psb副本.png

我们可以切换到“Leaks”这栏,单击“Cycles” &“Roods”就可以看到以图形方式显示出来的循环引用。这样我们就可以非常方便的找到循环引用的对象了,如下图所示。


psb-2.png

过多使用block的朋友们,循环引用可能是你们遇见最多的问题,这样我们以后就可以用这个方法查找循环引用了。

上一篇下一篇

猜你喜欢

热点阅读