您的位置:首页 > 移动开发 > IOS开发

iOS 几种定时器

2015-01-06 19:23 309 查看
 dispatch_source_t timer; //全局

//第一种 每一秒执行一次(重复性)  

double delayInSeconds = 1.0;  

timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, 

dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)); 

 

dispatch_source_set_timer(timer, DISPATCH_TIME_NOW,

 delayInSeconds * NSEC_PER_SEC, 0.0);  

dispatch_source_set_event_handler(timer, ^{  

    NSLog(@"timer date 1== %@",[NSDate date]);  

});  

dispatch_resume(timer);  

  

//第二种 二秒后执行 (一次性)  

double delayInSeconds = 2.0;  

dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 

(int64_t)(delayInSeconds * NSEC_PER_SEC));  

dispatch_after(popTime, dispatch_get_main_queue(), ^(void){  

    NSLog(@"timer date 2== %@",[NSDate date]);  

});  

  

//第三种 每一秒执行一次 (重复性)  

[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:

                            @selector(testTimer) userInfo:nil repeats:YES];
 

//GCD定时器

    dispatch_source_t timer=dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue());

    

    dispatch_source_set_timer(timer, dispatch_time(DISPATCH_TIME_NOW, 15ull*NSEC_PER_SEC), DISPATCH_TIME_FOREVER, 1ull*NSEC_PER_SEC);

    

    dispatch_source_set_event_handler(timer, ^{

        NSLog(@"wakeup");

        dispatch_source_cancel(timer);

    });

    

    dispatch_source_set_cancel_handler(timer, ^{

        NSLog(@"cancel");

        dispatch_release(timer);

    });

    //启动

    dispatch_resume(timer);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: