首页 > 技术文章 > 使用GCD验证码倒计时

thbbsky 2016-03-22 11:23 原文

 __block int timeout = 60;
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
    
    dispatch_source_t source_t = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
    
    dispatch_source_set_timer(source_t, dispatch_walltime(NULL, 0), 1*NSEC_PER_SEC, 0);
    
    dispatch_source_set_event_handler(source_t, ^{
        
        if (timeout<=0) {
            
            dispatch_source_cancel(source_t);
            dispatch_async(dispatch_get_main_queue(), ^{
                
                NSLog(@"重新开始倒计时");
            });
            
            
        }
        else
        {
            dispatch_async(dispatch_get_main_queue(), ^{
                
                NSLog(@"开始倒计时剩余%.2ds",timeout%60);
            });
        
            timeout --;
            
            
        }
        
        
        
    });
    dispatch_resume(source_t);
    
    
    
    
    
    

  

推荐阅读