以下是否会导致内存泄漏或者可以以某种方式将其更改为更好?随着 countDownTimer = nil
被移除
-(void)viewDidLoad{
countDownTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selectorselector(loadNewTime userInfo:nil repeats:YES];
}
-(void)pauseTimer{
NSLog(@"Fired");
[countDownTimer invalidate];
//countDownTimer = nil <------ Causes crash when run
}
-(void)resumeTimer{
countDownTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selectorselector(loadNewTime userInfo:nil repeats:YES];
}
可以使用 scheduleTimer
方法的 block
变体来避免保留循环。
var timer = Timer()
func startTimer() {
timer = Timer.scheduleTimer(withTimerInterval: 1.0, repeats: true, block: { [weak self] (timer) in
self?.performUpdate(timer: timer)
})
}
func stopTimer() {
timer.invalidate()
}
只要确保将 self
捕获为 weak
变量即可。
关于ios - NSTimer 内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7826394/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |