NSTimer 内存泄漏?

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)

Rat*_*ain 6

人们可以使用一种方法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)

只要确保捕获selfweak变量即可。