如何释放Cell中的NSTimer

2017-10-17  本文已影响0人  卡布奇诺不加糖
Cell中使用NSTimer

问题

Cell中使用了NSTimer做倒计时功能,在Cell的dealloc方法中销毁定时器[self.timer invalidate];然而当退出当前视图控制器时Cell并没有释放。

原因

Cell与timer相互强引用,造成循环引用,无法释放,dealloc无法执行。

解决方案

Cell即将从父视图移除时,销毁定时器。

/**

开启定时器

*/

- (void)startTimer {

//1.校验,只实例化一次

if (self.timer) return;

//2.实例化定时器

NSTimer *timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(reloadUI) userInfo:nil repeats:YES];

//3.添加到运行循环

[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

self.timer = timer;

}

“销毁定时器”

销毁定时器,释放Cell

源码地址

https://github.com/nuoatuo/FreeTimerOfCell.git

上一篇下一篇

猜你喜欢

热点阅读