NSTimer使用事项

1.将NSTimer加入NSRunLoopCommonModes避免与主Runloop竞争

两个Runloop:

  • NSDefaultRunLoopMode: 用于UI的渲染
  • NSRunLoopCommonModes:将NSTimer加入到这个Runloop,如果不特别声明,NSTimer会在默认的Runloop运行,造成有UISrollView时,滑动Scrollview,DefaultRunLoop用于渲染ScrollView,就不会继续NSTimer,NSTimer会停止。
timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                         target:self
                                       selector:@selector(updateLastTime:)
                                       userInfo:nil
                                        repeats:YES];
[[NSRunLoop currentRunLoop]addTimer: timer forMode:NSRunLoopCommonModes];

2.NSTimer使用完之后手动销毁

在使用完NSTimer之后就手动调用[timer invalidate]销毁NSTimer,不要等到在- (void)dealloc{}方法中销毁。

- (void)backAction{
    
    [timer invalidate];
    timer = nil;
    
    [self dismissViewControllerAnimated:YES completion:nil];
    
}

你可能感兴趣的:(NSTimer使用事项)