GCD 定时器的使用


@interface ViewController ()

@property(nonatomic, strong)dispatch_source_t timer;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    
    /** GCD 定时器的使用 五大步 */
    
    /** step1 创建义个定时器类型的 Runlopp InputSource
     参数1:source的类型 timer
     参数2:对参数1的描述默认传0,
     参数3:对参数1的更详细描述默认传0,
     参数4:timer source 执行的队列 (mainQueue 主线程,非mainQueue 子线程)
     */
    dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue());
    
    
    
    /** step2: 设置runloop 的inputSource
     参数1: timer 类型的inputSource
     参数2: 从什么时间开始  DISPATCH_TIME_NOW 现在
     参数3: 定时间个时间 2秒1次
     参数4: 允许的定时误差,0 表示精准
     
     */
    dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
    
    
    /** step3: 定时器执行的事件 */
    dispatch_source_set_event_handler(timer, ^{
        NSLog(@"定时器 --- 定时执行的事件");
    });
    
    /**step4: 开启定时器 (定时器默认是挂起的) */
    dispatch_resume(timer);

    /** step5:  包住定时器的名 */
    self.timer = timer;
}

你可能感兴趣的:(GCD 定时器的使用)