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