QYHRetainCycleDetector 0.1.3

QYHRetainCycleDetector 0.1.3

mLazyDaddy 维护。



  • mLazyDaddy

QYHRetainCycleDetector

ObjectiveC 保留周期检测器


简介

通过 hook objc_retainobjc_release 等方法,将存活的 NSObject 对象添加进对象池,然后定时检测对象池中的对象是否存在循环引用。

检测循环引用的实现借鉴了 FBRetainCycleDetector,为了避免在检测过程中再次调用 objc_retain 等方法进入死循环,主要使用 CoreFoundation 对象以及自定义结构,手动管理内存。

目前可以检测到的循环引用有 NSObject 对象 A 和 B 互相强引用、NSTimer 循环引用、Block 循环引用。

使用方式

启用

[QYHRetainCycleDetector enable];

建议将启用函数添加到以下函数中。

application:didFinishLaunchingWithOptions:

函数中。

关闭

QYHRetainCycleDetector disable];

性能

QYHRetainCycleDetector本质上是一个测试工具,尽管尽可能做了优化,但通过遍历对象引用链仍然是耗时操作,不建议在生产环境中使用。