
Cell中使用NSTimer
問題
Cell中使用了NSTimer做倒計時功能,在Cell的dealloc方法中銷毀定時器[self.timer invalidate];然而當(dāng)退出當(dāng)前視圖控制器時Cell并沒有釋放。
原因
Cell與timer相互強引用,造成循環(huán)引用,無法釋放,dealloc無法執(zhí)行。
解決方案
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.添加到運行循環(huán)
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
self.timer = timer;
}
“銷毀定時器”

銷毀定時器,釋放Cell