Jam*_*nay 2 xcode objective-c nstimer ios
以下内容是否会导致内存泄漏,或者可以以某种方式将其更改为更好吗?随着countDownTimer = nil被移除
-(void)viewDidLoad{
countDownTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(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 selector:@selector(loadNewTime:) userInfo:nil repeats:YES];
}
Run Code Online (Sandbox Code Playgroud)
人们可以使用一种方法block的变体scheduleTimer来避免循环引用。
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()
}
Run Code Online (Sandbox Code Playgroud)
只要确保捕获self为weak变量即可。
| 归档时间: |
|
| 查看次数: |
2681 次 |
| 最近记录: |