日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > 綜合技術(shù) > ios多線程 -- GCD 常見用法

ios多線程 -- GCD 常見用法

來源:程序員人生   發(fā)布時間:2016-08-04 09:14:40 閱讀次數(shù):2654次

GCD 通訊操作

#pragma mark - GCD 通訊 - (void)sendMessage{ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ //耗時操作 [self downLoad:@"http://..."]; //回主隊列刷新數(shù)據(jù) dispatch_async(dispatch_get_main_queue(), ^{ //刷新UI操作 }); }); }

延時操作
iOS常見的延時履行有2種方式
(1)調(diào)用NSObject的方法

// 2秒后再調(diào)用self的run方法 [self performSelector:@selector(run) withObject:nil afterDelay:2.0];

(2)使用GCD函數(shù)

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ // 2秒后異步履行這里的代碼... });

代碼演示:

#pragma mark - GCD 延遲 - (void)delayModel:(CGFloat)time{ // 經(jīng)過延遲 time 秒后,回到當(dāng)前線程,履行。不會卡住當(dāng)前線程 // 該方法在那個線程調(diào)用,那末run就在哪一個線程履行(當(dāng)前線程),通常是主線程 //[self performSelector:@selector(downLoad:) withObject:@"delayModel" afterDelay:time]; // GCD 實現(xiàn) dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(time * NSEC_PER_SEC)), queue, ^{ [self downLoad:@"GCD---delayModel"]; }); }

延時操作
GCD延時操作

1次性代碼

#pragma mark - GCD 1次性代碼 - (void)onceCore{ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ // 只履行1次的代碼(這里面默許是線程安全的) [self downLoad:@"onceCore"]; }); }

一次性代碼

隊列組

#pragma mark - GCD 隊列組 - (void)groupQueue{ // 1 獲得全局隊列 /** * 優(yōu)先級 * DISPATCH_QUEUE_PRIORITY_HIGH 2 // 高 * DISPATCH_QUEUE_PRIORITY_DEFAULT 0 // 默許(中) * DISPATCH_QUEUE_PRIORITY_LOW (⑵) // 低 * DISPATCH_QUEUE_PRIORITY_BACKGROUND INT16_MIN // 后臺 */ dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); // 2 獲得隊列組 dispatch_group_t group = dispatch_group_create(); // 3 下載圖片1 //__block 修飾的值才能在 block 中改 __block UIImage *image1 = nil; dispatch_group_async(group, queue, ^{ //下載圖片 NSString *urlStr = @"http://b.hiphotos.baidu.com/image/pic/item/cdbf6c81800a19d8c58c800431fa828ba61e4627.jpg"; NSURL *url = [NSURL URLWithString:urlStr]; NSData *data = [NSData dataWithContentsOfURL:url]; image1 = [UIImage imageWithData:data]; }); // 4 下載圖片2 __block UIImage *image2 = nil; dispatch_group_async(group, queue, ^{ //下載圖片 NSString *urlStr = @"http://b.hiphotos.baidu.com/image/w%3D230/sign=fbc72e14362ac65c67056170cbf2b21d/e4dde71190ef76c666af095f9e16fdfaaf516741.jpg"; NSURL *url = [NSURL URLWithString:urlStr]; NSData *data = [NSData dataWithContentsOfURL:url]; image2 = [UIImage imageWithData:data]; }); // 5 合并圖片1, 2 dispatch_group_notify(group, queue, ^{ //獲得圖形上下文 UIGraphicsBeginImageContextWithOptions(image1.size, NO, 0.0); //繪制第1張圖片 [image1 drawInRect:CGRectMake(0, 0, image1.size.width, image1.size.height)]; //繪制第2張圖片 [image2 drawInRect:CGRectMake(0, 0, image2.size.width * 4, image2.size.height * 3)]; //得到上下文的新圖片 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); //關(guān)閉上下文 UIGraphicsEndImageContext(); //回到主線程刷新界面 dispatch_async(dispatch_get_main_queue(), ^{ self.imageView.image = newImage; }); }); }

隊列組

補(bǔ)充:

有這么1種需求: 首先:分別異步履行2個耗時的操作 其次:等2個異步操作都履行終了后,再回到主線程履行操作 如果想要快速高效地實現(xiàn)上述需求,可以斟酌用隊列組 dispatch_group_t group = dispatch_group_create(); dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // 履行1個耗時的異步操作 }); dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // 履行1個耗時的異步操作 }); dispatch_group_notify(group, dispatch_get_main_queue(), ^{ // 等前面的異步操作都履行終了后,回到主線程... });
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国语成人| 黄色小视频在线看 | 精品视频一区二区三区 | 尤物av | 麻豆成人久久精品二区三区小说 | 国产精品美女久久久久久久网站 | 欧美性猛交xxxx免费看 | 欧美国产在线视频 | 久久精品a | 91激情网| 国产精品久久久久久久久久久新郎 | 成人在线www | 色婷婷色丁香 | 日韩精品在线一区 | 一区二区三区日韩欧美 | 精品人伦一区二区三区蜜桃网站 | 色婷婷久久久亚洲一区二区三区 | 九九热在线观看 | 91在线第一页| 久久精品青草 | 99精品国产福利在线观看免费 | 毛片国产 | 999久久久| 国产精品自在线 | 91色在线视频 | 网站av| 亚洲成人免费av | 亚洲精品免费观看 | 黄色网址免费看 | 久久国产伊人 | 欧美日韩精品一区二区 | 国产午夜视频在线观看 | 免费中文av | 精品国产一区二区在线 | 伊人网综合 | 1000部精品久久久久久久久 | 天堂俺去俺来也www久久婷婷 | 玖玖视频在线 | 国产在线国偷精品免费看 | v片在线观看 | 操女人网站 |