__block int time = 3; //倒計時時間
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
dispatch_source_set_timer(timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0 * NSEC_PER_SEC);
dispatch_source_set_event_handler(timer, ^{
if(time<=0){
dispatch_source_cancel(timer); //沒有這句代碼不執行
dispatch_async(dispatch_get_main_queue(), ^{
});
}else{
time--;
}
});
dispatch_resume(timer);
二。
dispatch_source_t source = dispatch_source_create(DISPATCH_SOURCE_TYPE_DATA_ADD, 0, 0, dispatch_get_global_queue(0, 0));
dispatch_source_set_event_handler(source, ^{
dispatch_sync(dispatch_get_main_queue(), ^{
//更新UI
NSLog(@"source");
dispatch_source_cancel(source);
});
});
dispatch_resume(source);
dispatch_sync(dispatch_get_global_queue(0, 0), ^{
//網絡請求
NSLog(@"request");
dispatch_source_merge_data(source, 1); //通知隊列
});