亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

IOS多線程實現多圖片下載(二)

2020-07-26 03:24:33
字體:
來源:轉載
供稿:網友

上篇文章給大家介紹了IOS多線程實現多圖片下載1,本文繼續給大家介紹ios多線程下載圖片。

這次是用多線程進行圖片的下載與存儲,而且考慮到下載失敗,占位圖片的問題(第一張就是下載失敗的圖片)

閑話少說,上代碼吧,因為有一部分和上次的一樣,所以這里只上傳不一樣的

先給大家展示下效果圖:

依舊都是在ViewController.m中

1.

@interface ViewController ()//所有數據@property (nonatomic,strong)NSArray *apps;//內存緩存圖片@property (nonatomic,strong)NSMutableDictionary *imgCache;/**所有操作*/@property (nonatomic,strong)NSMutableDictionary *operations;/**隊列對象*/@property (nonatomic,strong) NSOperationQueue *queue;@end 

前兩個和前面的一致

operations使用來存儲下載圖片的線程操作的字典,主要作用是防止重復下載

queue則是使用多線程時用到的隊列

2.

- (NSOperationQueue *)queue {if (!_queue) {_queue = [[NSOperationQueue alloc] init];//最大并發數_queue.maxConcurrentOperationCount = 3;}return _queue;} 

對queue的初始化,以及控制子線程最多為3條

3.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {static NSString *ID = @"app";UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];DDZApp *app = self.apps[indexPath.row];cell.textLabel.text = app.name;cell.detailTextLabel.text = app.download;//先從內存中取出圖片UIImage *image = self.imgCache[app.icon];if (image) {cell.imageView.image = image;}else {//內存中沒有圖片//將圖片文件數據寫入到沙盒中NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];//獲得文件名NSString *filename = [app.icon lastPathComponent];//計算出文件的全路徑NSString *file = [cachesPath stringByAppendingPathComponent:filename];//加載沙盒的文件數據NSData *data = [NSData dataWithContentsOfFile:file];//判斷沙盒中是否有圖片if (data) {//直接加載沙盒中圖片UIImage *image = [UIImage imageWithData:data];cell.imageView.image = image;//存到字典(內存)中self.imgCache[app.icon] = image;}else {//下載圖片//占位圖片cell.imageView.image = [UIImage imageNamed:@"place.jpg"];//先判斷是否有下載任務//加載失敗后可以重復下載NSOperation *operation = self.operations[app.icon];if (operation == nil) {//這張圖片沒有下載任務operation = [NSBlockOperation blockOperationWithBlock:^{NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:app.icon]];//數據加載失敗if(data == nil) {//移除操作[self.operations removeObjectForKey:app.icon];return ;}UIImage *image = [UIImage imageWithData:data];//存到內存中self.imgCache[app.icon] = image;//回到主線程顯示圖片[[NSOperationQueue mainQueue] addOperationWithBlock:^{//會出現重復占位的問題//cell.imageView.image = image;//只需找到圖片所在的行即可[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];}];//將圖片數據寫入到沙盒中[data writeToFile:file atomically:YES];//移除操作[self.operations removeObjectForKey:app.icon];}];//添加到下載隊列[self.queue addOperation:operation];//添加到字典self.operations[app.icon] = operation;}}}return cell;}

這次綁定數據的方法內容有點多,因為考慮到了不少細節,不過邏輯和上次的差不多。

有關本文給大家介紹的IOS多線程實現多圖片下載2 ,小編就給大家介紹到這里,希望對大家有所幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91免费人成网站在线观看18| 最近中文字幕mv在线一区二区三区四区| 久久成年人免费电影| 精品电影在线观看| 日韩欧美主播在线| 成人精品一区二区三区| 日韩电影中文字幕一区| 成人欧美一区二区三区在线| 日韩有码片在线观看| 国产成人精品优优av| 欧美肥婆姓交大片| 日韩精品有码在线观看| 国产v综合ⅴ日韩v欧美大片| 狠狠色香婷婷久久亚洲精品| 国产精品扒开腿做| 久久久久国产精品免费网站| 欧美极品美女电影一区| 成人午夜激情免费视频| 亚洲美女福利视频网站| 久久精品在线播放| 亚洲精品中文字幕有码专区| 欧美精品久久一区二区| 日韩精品高清在线观看| 欧美精品日韩三级| 久久精视频免费在线久久完整在线看| 欧美日韩久久久久| 久久久久久亚洲精品中文字幕| 日韩欧美国产一区二区| 欧美猛少妇色xxxxx| 午夜精品久久久久久久99热浪潮| 欧美激情亚洲自拍| 日本高清不卡的在线| 91深夜福利视频| 亚洲人午夜精品| 伊人成人开心激情综合网| 成人情趣片在线观看免费| 亚洲国产另类久久精品| 久久久国产91| 亚洲成人在线视频播放| 日韩中文字幕视频在线观看| 日韩视频免费大全中文字幕| 色黄久久久久久| 国外成人性视频| 国产视频在线一区二区| 亚洲人成人99网站| 久久亚洲欧美日韩精品专区| 欧美精品精品精品精品免费| 亚洲国产精品悠悠久久琪琪| 久久久国产成人精品| 中文字幕精品—区二区| 秋霞av国产精品一区| 亚洲国产精品yw在线观看| 亚洲午夜av电影| 国产成人精品久久二区二区91| 国产成人精品在线播放| 国产精品高潮呻吟久久av黑人| 亚洲精品国产精品久久清纯直播| 中文字幕亚洲图片| 亚洲va男人天堂| 中文字幕精品一区久久久久| 欧美中文在线免费| 日韩精品视频在线| 国产精品免费久久久久影院| 欧美激情视频一区二区三区不卡| 欧美精品生活片| 青草热久免费精品视频| 一区国产精品视频| 亚洲欧美日本伦理| 中文字幕无线精品亚洲乱码一区| 亚洲最大av网| 久久精品99久久久久久久久| 不卡在线观看电视剧完整版| 久久久久99精品久久久久| 亚洲永久在线观看| 91在线观看免费高清| 伊人亚洲福利一区二区三区| 亚洲天堂开心观看| 久久综合电影一区| 日本韩国欧美精品大片卡二| 成人午夜在线视频一区| 8x海外华人永久免费日韩内陆视频| 美日韩精品免费视频| 欧美日韩国产成人| 一区二区三区天堂av| 狠狠躁天天躁日日躁欧美| 欧美日韩人人澡狠狠躁视频| 欧美激情视频免费观看| 亚洲欧美www| 成人a视频在线观看| 日韩在线观看av| 久久久久久成人精品| 欧美日韩xxxxx| 国产精品久久久久久久av大片| 91精品久久久久久久久不口人| 在线播放日韩专区| 欧美日韩国产精品专区| 亚洲国产精品成人精品| 97在线免费视频| 亚洲第一视频在线观看| 亚州成人av在线| 国产丝袜精品视频| 久久中文精品视频| 日韩av手机在线看| 国产精品视频一| 国产精品88a∨| 久久久免费高清电视剧观看| 国产精品视频资源| 欧美精品激情blacked18| 青青久久aⅴ北条麻妃| 亚洲欧美色婷婷| 伊人久久精品视频| www日韩中文字幕在线看| 清纯唯美日韩制服另类| 欧美日韩亚洲视频一区| 欧美一级在线播放| 在线播放国产一区中文字幕剧情欧美| 午夜精品国产精品大乳美女| 国产精品视频最多的网站| 久久6免费高清热精品| 国产精品久久久久秋霞鲁丝| 一本色道久久综合狠狠躁篇怎么玩| 亚洲欧美国产精品久久久久久久| 欧美精品一区二区三区国产精品| 久久久中精品2020中文| 国产精品一区二区久久精品| 国产精品h在线观看| 在线国产精品视频| 精品日韩中文字幕| 日韩中文字幕在线| 欧美日韩国产精品一区二区不卡中文| 日韩欧美视频一区二区三区| 久久九九国产精品怡红院| 欧美成人激情图片网| 亚洲精品美女在线观看播放| 久久av在线看| 九九热这里只有精品免费看| 一本色道久久综合狠狠躁篇怎么玩| 韩剧1988在线观看免费完整版| 色综合久综合久久综合久鬼88| 日本成人激情视频| 国产欧美精品一区二区三区介绍| 中日韩午夜理伦电影免费| 日韩av在线不卡| 欧美中文在线观看国产| 中文字幕日韩欧美在线| 91色视频在线观看| 伊人成人开心激情综合网| 欧美日韩午夜视频在线观看| 欧美激情精品久久久久久免费印度| 色婷婷综合久久久久中文字幕1| 亚洲aa中文字幕| 欧美性xxxxx极品| 久久99精品视频一区97| 精品调教chinesegay| 亚洲最新av在线网站| 亚洲精品wwwww| 欧美日韩亚洲系列| 欧美丰满片xxx777| 国产丝袜一区二区三区| 国产免费亚洲高清| 日韩精品在线免费观看视频| 久久久久久有精品国产| 久久视频免费在线播放| 亚洲国产精品一区二区三区|