介绍
这篇文章将为大家详细讲解有关怎么在iOS中利用多线程实现多图下载功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
一。模型文件代码如下
//, XMGAPP.h , # import & lt;基?Foundation.h>, , @interface XMGAPP : NSObject ,/* *,APP的名称,*/, @property (原子,,强烈),NSString *名字,,/* *,应用的图片的url地址,*/, @property (原子,,强烈),NSString *图标,,/* *,应用的下载量,*/, @property (原子,,强烈),NSString *下载,, , + (instancetype) appWithDict:(NSDictionary *) dict;, @end
//, XMGAPP.m , # import “XMGAPP.h", , @implementation XMGAPP , + (instancetype) appWithDict:(NSDictionary *) dict {, XMGAPP 才能;* appM =, [[XMGAPP alloc] init];,//KVC 才能; ,,(appM setValuesForKeysWithDictionary: dict类型),, ,, appM; return 才能; }, @end
控制器。m代码如下:
//, ViewController.m , # import “ViewController.h", # import “XMGAPP.h", , @interface ViewController (),/* *,tableView的数据源,*/, @property (原子,,强烈),NSArray *应用;,/* *,内存缓存,*/, @property (原子,,强烈),NSMutableDictionary *图像;,/* *,队列,*/, @property (原子,,强烈),NSOperationQueue *队列;,/* *,操作缓存,*/, @property (原子,,强烈),NSMutableDictionary *操作,, @end , @implementation ViewController , # pragma mark - - - - - - - - - - - - - - - - - - - - - - -, # pragma mark  lazy loading ——(NSOperationQueue *) queue {, if 才能;(_queue ==, nil), {, ,,,_queue =, [[NSOperationQueue alloc] init];, ,,,//设置最大并发数, ,,,_queue.maxConcurrentOperationCount =, 5,, ,,}, _queue; return 才能; }, ——(NSMutableDictionary *) images {, if 才能;(_images ==, nil), {, ,,,_images =, (NSMutableDictionary 字典),, ,,}, _images; return 才能; }, ——(NSArray *) apps {, if 才能;(_apps ==, nil), {, ,,,, ,,,//字典数组, ,,,NSArray * arrayM =, (NSArray arrayWithContentsOfFile: [[NSBundle mainBundle] pathForResource: @" apps.plist",减低:nil]];, ,,,, ,,,//字典数组——祝辞模型数组, ,,,NSMutableArray * arrM =, (NSMutableArray 数组),, ,,,for (NSDictionary * dict  arrayM拷贝),{, ,,,,,(arrM addObject: [XMGAPP appWithDict: dict]];, ,,,}, ,,,_apps =, arrM;, ,,}, _apps; return 才能; }, , ——(NSMutableDictionary *) operations {, if 才能;(_operations ==, nil), {, ,,,_operations =, (NSMutableDictionary 字典),, ,,}, _operation; return 才能; }, , # pragma mark - - - - - - - - - - - - - - - - - - - - - - -, # pragma mark UITableViewDatasource ——(NSInteger) numberOfSectionsInTableView:(UITableView *) tableView {, ,,return 1; }, , ——(NSInteger) tableView: (UITableView *) tableView numberOfRowsInSection:也(NSInteger) section {, self.apps.count; return 才能; }, , ——(UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: indexPath  (NSIndexPath *); {, static 才能;NSString * ID =, @" app",, ,,//1 .创才能建cell UITableViewCell 才能;* cell =, (tableView dequeueReusableCellWithIdentifier: ID),, ,,//2。才能设置单元格的数据,//2.1,才能拿到该行细胞对应的数据, XMGAPP 才能;* appM =, self.apps (indexpath。row),, ,,//2.2,才能设置标题, 时间=cell.textLabel.text 才能;appM.name;, ,,//2.3,才能设置子标题, 时间=cell.detailTextLabel.text 才能;appM.download;, ,,//2.4,才能设置图标, ,,//先才能去查看内存缓存中该图片时候已经存在,如果存在那么久直接拿来用,否则去检查磁盘缓存, null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null怎么在iOS中利用多线程实现多图下载功能