国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - IOS多線程實現多圖片下載(一)

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

2021-01-13 16:10blue-fly IOS

這篇文章主要介紹了IOS多線程實現多圖片下載(一)的相關資料,需要的朋友可以參考下

在沒有步入正文之前先給大家展示下效果圖,如果大家覺得很滿意請繼續往下閱讀全文。

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

大家可以看到這個界面很簡單,其實就是uitableview的布局,但是難點是在于如何從網上下載這些圖片,下載之后應如何進行存儲!

我們一步一步進行解析,先從單線程(主線程)進行多圖片下載我們布局上的文字及圖片的地址從plist文件中進行讀取

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

根據結構,我們自定義一個數據模型文件

ddzapp.h

?
1
2
3
4
5
6
7
8
9
10
#import <foundation/foundation.h>
@interface ddzapp : nsobject
//圖標
@property (nonatomic,strong) nsstring *icon;
//名字
@property (nonatomic,strong) nsstring *name;
//下載量
@property (nonatomic,strong) nsstring *download;
+ (instancetype)appwithdict:(nsdictionary *)dict;
@end

ddzapp.m

?
1
2
3
4
5
6
7
8
#import "ddzapp.h"
@implementation ddzapp
+ (instancetype)appwithdict:(nsdictionary *)dict {
ddzapp *app = [[self alloc] init];
[app setvaluesforkeyswithdictionary:dict];
return app;
}
@end

以下的都是視圖控制器中的代碼

viewcontroller.m

1.

?
1
2
3
4
5
6
@interface viewcontroller ()
//所有數據
@property (nonatomic,strong)nsarray *apps;
//內存緩存圖片
@property (nonatomic,strong)nsmutabledictionary *imgcache;
@end

第一個屬性用于存儲讀取plist文件中的內容,設置為屬性保存起來,就可以不用重復讀取

第二個屬性用于保存從網上下載下來的圖片,也是為了不用重復讀取

2.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@implementation viewcontroller
//讀取數據
- (nsarray *)apps {
if (!_apps) {
//從plist文件中讀取數據
nsarray *dictarray = [nsarray arraywithcontentsoffile:[[nsbundle mainbundle] pathforresource:@"apps.plist" oftype:nil]];
nsmutablearray *apparray = [nsmutablearray array];
for (nsdictionary *dict in dictarray) {
[apparray addobject:[ddzapp appwithdict:dict]];
}
_apps = apparray;
}
return _apps;
}
//緩存圖片
- (nsmutabledictionary *)imgcache {
if (!_imgcache) {
//初始化
_imgcache = [nsmutabledictionary dictionary];
}
return _imgcache;
}

這兩個方法都是為了初始化剛才的兩個屬性

3.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#pragma mark - 數據源方法
- (nsinteger)tableview:(uitableview *)tableview numberofrowsinsection:(nsinteger)section {
return self.apps.count;
}
- (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) {
//直接加載沙盒中圖片
cell.imageview.image = [uiimage imagewithdata:data];
//存到字典(內存)中
self.imgcache[app.icon] = cell.imageview.image;
}else {
//下載圖片
data = [nsdata datawithcontentsofurl:[nsurl urlwithstring:app.icon]];
cell.imageview.image = [uiimage imagewithdata:data];
//存到內存中
self.imgcache[app.icon] = cell.imageview.image;
//將圖片數據寫入到沙盒中
[data writetofile:file atomically:yes];
}
}
return cell;
}

這兩個方法是uitableview必須要實現的方法

第一個是返回數據量,沒什么好說的

第二個是綁定數據

具體的流程看下圖

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

以上內容針對ios多線程實現多圖片下載(一)的相關介紹,希望對大家有所幫助,下篇文章繼續給大家介紹ios多線程實現多圖片下載(二),感興趣的朋友請持續關注。

延伸 · 閱讀

精彩推薦
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111302021-03-15
  • IOSiOS開發技巧之狀態欄字體顏色的設置方法

    iOS開發技巧之狀態欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發技巧之狀態欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOSiOS開發之視圖切換

    iOS開發之視圖切換

    在iOS開發中視圖的切換是很頻繁的,獨立的視圖應用在實際開發過程中并不常見,除非你的應用足夠簡單。在iOS開發中常用的視圖切換有三種,今天我們將...

    執著丶執念5272021-01-16
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产福利视频在线观看 | av一区二区三区四区 | 综合久久久 | 国产中文字幕在线观看 | 久草电影网 | www.日韩| 国产小视频在线 | 日韩不卡一区二区三区 | 亚洲欧美网址 | www.亚色网.com | 欧美 日韩 国产 成人 在线 91 | 久久精品免费观看 | 成人片网址 | 国产毛片视频 | 欧美日韩亚洲一区 | 国产精品美女久久久久久久网站 | 国产成人久久av免费高清密臂 | 国产一区二区精品在线观看 | 国产免费黄色 | 日韩欧美中文字幕在线视频 | 中文在线а√在线8 | 欧美一区二区激情视频 | 亚洲免费一区 | 精品久久久久久久久久久久久久 | 久久综合888 | 综合自拍| 日韩视频在线一区二区 | 日韩中文视频 | 欧美日韩国产在线播放 | 亚洲国产成人精品久久久国产成人一区 | 一区二区av | 久久男人| 亚洲一区免费在线观看 | 日本三级中文在线电影 | 精品久久久久一区二区国产 | 久久av网站 | 一级欧美一级日韩 | 久久久久久久久99精品 | 天堂在线免费视频 | 国产成人精品综合 | 一本综合久久 |