在使用NSTimer的过程中可能会遇到控制器明明销毁了,但是就是不会走控制器的dealloc销毁方法,NSTimer也没有停止运行,这就说明在使用NSTimer过程中出现了循环引用导致的内存泄露问题,在stackoverflow上看到了一种巧妙的方式解除这种循环引用,在此记录一下。
发生内存泄漏的场景
例如我们在viewController中声明了NSTimer属性,然后在viewDidLoad中去创建一个NSTimer实例赋值给myTimer,让它在dealloc方法中对myTimer进行销毁操作(我们只考虑在dealloc方法中对其销毁)
:
1 | @interface ViewController () |