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];
    
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • You use the NSTimer class to create timer objects or, mor...
    UILabelkell阅读 521评论 1 6
  • 定时器的用法 系统提供了8个创建方法,6个类创建方法,2个实例初始化方法。有三个方法直接将timer添加到...
    gpylove阅读 1,843评论 1 3
  • /** * 定义一个定时器 */ timer = [NSTimer scheduledTimerWithTimeI...
    钱塘老酒酿阅读 2,032评论 0 9
  • 1. 什么是NSTimer   官方的解释“A timer provides a way to perform a...
    Timir阅读 856评论 0 3
  • 伊川县文正中学 昌应战 时光匆匆,不觉已在文正中学幸福快乐地工作生活了22个年头了。我深深地...
    一叶知秋_0f46阅读 298评论 0 0