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

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > Dispatch Group的使用

Dispatch Group的使用

來源:程序員人生   發布時間:2015-04-14 08:50:38 閱讀次數:2527次

轉自MJ偶像

Dispatch Group的使用

假定有這樣1個需求:從網絡上下載兩張不同的圖片,然后顯示到不同的UIImageView上去,1般可以這樣實現

[java] view plaincopy
  1. // 根據url獲得UIImage  
  2. - (UIImage *)imageWithURLString:(NSString *)urlString {  
  3.     NSURL *url = [NSURL URLWithString:urlString];  
  4.     NSData *data = [NSData dataWithContentsOfURL:url];  
  5.     return [UIImage imageWithData:data];  
  6. }  
  7.   
  8. - (void)downloadImages {  
  9.     // 異步下載圖片  
  10.     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{  
  11.         // 下載第1張圖片  
  12.         NSString *url1 = @"http://car0.autoimg.cn/upload/spec/9579/u_20120110174805627264.jpg";  
  13.         UIImage *image1 = [self imageWithURLString:url1];  
  14.           
  15.         // 下載第2張圖片  
  16.         NSString *url2 = @"http://hiphotos.baidu.com/lvpics/pic/item/3a86813d1fa41768bba16746.jpg";  
  17.         UIImage *image2 = [self imageWithURLString:url2];  
  18.           
  19.         // 回到主線程顯示圖片  
  20.         dispatch_async(dispatch_get_main_queue(), ^{  
  21.             self.imageView1.image = image1;  
  22.               
  23.             self.imageView2.image = image2;  
  24.         });  
  25.     });  
  26. }  
雖然這類方案可以解決問題,但其實兩張圖片的下載進程其實不需要按順序履行,并發履行它們可以提高履行速度。有個注意點就是必須等兩張圖片都下載終了后才能回到主線程顯示圖片。Dispatch Group能夠在這類情況下幫我們提升性能。下面先看看Dispatch Group的用途:

我們可使用dispatch_group_async函數將多個任務關聯到1個Dispatch Group和相應的queue中,group會并發地同時履行這些任務。而且Dispatch Group可以用來阻塞1個線程, 直到group關聯的所有的任務完成履行。有時候你必須等待任務完成的結果,然后才能繼續后面的處理。

下面用Dispatch Group優化上面的代碼:

[java] view plaincopy
  1. // 根據url獲得UIImage  
  2. - (UIImage *)imageWithURLString:(NSString *)urlString {  
  3.     NSURL *url = [NSURL URLWithString:urlString];  
  4.     NSData *data = [NSData dataWithContentsOfURL:url];  
  5.     // 這里并沒有自動釋放UIImage對象  
  6.     return [[UIImage alloc] initWithData:data];  
  7. }  
  8.   
  9. - (void)downloadImages {  
  10.     dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);  
  11.       
  12.     // 異步下載圖片  
  13.     dispatch_async(queue, ^{  
  14.         // 創建1個組  
  15.         dispatch_group_t group = dispatch_group_create();  
  16.           
  17.         __block UIImage *image1 = nil;  
  18.         __block UIImage *image2 = nil;  
  19.           
  20.         // 關聯1個任務到group  
  21.         dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{  
  22.             // 下載第1張圖片  
  23.             NSString *url1 = @"http://car0.autoimg.cn/upload/spec/9579/u_20120110174805627264.jpg";  
  24.             image1 = [self imageWithURLString:url1];  
  25.         });  
  26.           
  27.         // 關聯1個任務到group  
  28.         dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{  
  29.             // 下載第1張圖片  
  30.             NSString *url2 = @"http://hiphotos.baidu.com/lvpics/pic/item/3a86813d1fa41768bba16746.jpg";  
  31.             image2 = [self imageWithURLString:url2];  
  32.         });  
  33.           
  34.         // 等待組中的任務履行終了,回到主線程履行block回調  
  35.         dispatch_group_notify(group, dispatch_get_main_queue(), ^{  
  36.             self.imageView1.image = image1;  
  37.             self.imageView2.image = image2;  
  38.               
  39.             // 千萬不要在異步線程中自動釋放UIImage,由于當異步線程結束,異步線程的自動釋放池也會被燒毀,那末UIImage也會被燒毀  
  40.               
  41.             // 在這里釋放圖片資源  
  42.             [image1 release];  
  43.             [image2 release];  
  44.         });  
  45.           
  46.         // 釋放group  
  47.         dispatch_release(group);  
  48.     });  
  49. }  
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 81精品久久久久久久婷婷 | 黄色高清| 777毛片 | 欧美久久一区二区 | 日韩午夜影院 | 在线观看视频一区 | 精品日韩一区 | 欧美日韩国产色综合一二三四 | 日本欧美久久久 | 波多野结衣精品在线 | 一区二区三区欧美日韩 | 国产综合一区二区 | 国产黄色片在线观看 | 成人午夜网 | 日韩国产综合 | 亚洲一区 中文字幕 | 成人免费视频观看视频 | 色欧美综合 | 中国av在线 | 日韩精品一区二区在线观看 | wwwyoujizz日本| 国产精品一区二区精品视频免费看 | 牛牛影视一区二区三区免费看 | 欧美日韩另类一区 | 中文字幕一区二区三区精彩视频 | 一区二区视频网站 | 中文字幕av在线 | 久久久久久久一区二区三区 | 久久久电影 | 成人免费视频视频 | 国产精品99精品久久免费 | 亚洲毛片在线观看 | 97麻豆| 国产成人精品综合 | 久久久久国产精品免费免费搜索 | 最近免费观看电影大全在线观看 | 成人精品国产 | 色婷婷综合久久久中文字幕 | 午夜精品一区 | 91精品久久久久久久久 | 国产午夜毛片 |