1.創(chuàng)建串行Dispatch Queue:
dispatch_queue_t queue = dispatch_queue_create(“com.itcast.queue”,NULL);
2.獲取默認(rèn)優(yōu)先級(jí)的全局并發(fā)dispatch queue:
dispatch_queue_t? queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
3.在主線程中執(zhí)行任務(wù):(網(wǎng)絡(luò)異步下載圖片初茶,在回到主線程中更新UI):
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
NSURL?*url?=?[NSURL?URLWithString:@"http://car0.autoimg.cn/upload/spec/9579/u_20120110174805627264.jpg"];
UIImage?*image?=?[UIImage?imageWithData:[NSData?dataWithContentsOfURL:url]];
//?回到主線程顯示圖片
dispatch_async(dispatch_get_main_queue(),?^{
self.imageView.image?=?image;
});
});
4.用GCD實(shí)現(xiàn)倒計(jì)時(shí):
__blockinttimeout=300;//倒計(jì)時(shí)時(shí)間
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);//沒(méi)秒執(zhí)行
dispatch_source_set_event_handler(_timer,?^{
? ? ? ? if(timeout<=0){//倒計(jì)時(shí)結(jié)束,關(guān)閉
? ? ? ? ? ? ?dispatch_source_cancel(_timer);
? ? ? ? ? ? ?dispatch_release(_timer);
? ? ? ? ? ? ?dispatch_async(dispatch_get_main_queue(),?^{
? ? ? ? ? ? ?//設(shè)置界面的按鈕顯示?根據(jù)自己需求設(shè)置
? ? ? ? ? ? ?。纷跛。。琳要。简肴。。唇聘。。
? ? ? ? ? ? ?});
? ? ? ? }else{
? ? ? ? ? ? ?int minutes?=?timeout?/60;
? ? ? ? ? ? ?int seconds?=?timeout?%60;
? ? ? ? ? ? ?NSString?*strTime?=?[NSString?stringWithFormat:@"%d分%.2d秒后重新獲取驗(yàn)證碼",minutes,?seconds];
? ? ? ? ? ? dispatch_async(dispatch_get_main_queue(),?^{
? ? ? ? ? ? //設(shè)置界面的按鈕顯示?根據(jù)自己需求設(shè)置?
? ? ? ? ? ? 柱搜。迟郎。。聪蘸。宪肖。。健爬。控乾。 ?
? ? ? ? ? ? });
? ? ? ? ? ? timeout--;
? ? ? }
});
?dispatch_resume(_timer);
5.在開發(fā)中,有時(shí)我們要等待任務(wù)全部下載完成后才能繼續(xù)以下操作娜遵,這種情況我們可以使用dispatch_group_notify來(lái)實(shí)現(xiàn):
// 1.根據(jù)url獲取UIImage
//2.全部下載完畢更新UI