首页 > 移动平台 > 详细

iOS 中计时器的使用心得

时间:2016-04-16 18:44:36      阅读:186      评论:0      收藏:0      [点我收藏+]

1. NSTimer 

  使用NSTimer开启的计时器,如果拖动scrollView会导致计时器暂停,并且锁屏的时候必须暂停计时器,否则抛异常.

  暂停计时器方法 [_sTimer setFireDate:[NSDate distantFuture]];

  恢复计时器方法 [_sTimer setFireDate:[NSDate distantPast]];

_sTimer = [NSTimer scheduledTimerWithTimeInterval:interval
                                                         target:timerTarget
                                                       selector:@selector(fireTimer)
                                                       userInfo:userInfo
                                                        repeats:repeats];
[[NSRunLoop mainRunLoop] addTimer:_sTimer forMode:NSRunLoopCommonModes];

2.使用GCD开启的计时器,如果拖动scrollView,不会影响计时器的执行.但是,在iPad Mini的低版本上,苹果没有对其进行优化,使用这种方式开启的计时器会阻塞UI的响应事件.

            //开启子线程加载曲谱
            uint64_t interval = PerSecondTime * NSEC_PER_SEC;
            dispatch_queue_t queue = dispatch_queue_create("timerQueue", 0);
            _timers = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
            dispatch_source_set_timer(_timers, dispatch_time(DISPATCH_TIME_NOW, 0), interval, 0);
    
            MLWeakSelf;
            dispatch_source_set_event_handler(_timers, ^()
                                              {
    //                                              NSLog(@"Timer %@", [NSThread currentThread]);
                                                  [weakSelf fireTimer];
                                              });
            dispatch_resume(_timers);

 

iOS 中计时器的使用心得

原文:http://www.cnblogs.com/KrystalNa/p/5398813.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!