问题
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;
}
网友评论