OGeek|极客世界-中国程序员成长平台

标题: ios - NSTimer 内存泄漏? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 09:29
标题: ios - NSTimer 内存泄漏?

以下是否会导致内存泄漏或者可以以某种方式将其更改为更好?随着 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];
}



Best Answer-推荐答案


可以使用 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/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4