1.多线程网络沙盒 方式加载UITableViewCell中的图片
1.首先,在apps.plist存放待加载图片的属性信息,如:
2.新建类 App作为数据模型,用来将之前的apps.plist转换成该模型
App.h
#import <Foundation/Foundation.h>
@interface App : NSObject
/**
* 字典里面的key和实体的属性名要一样
*/
@property (nonatomic,copy) NSString *name;//图片名
@property (nonatomic,copy) NSString *download;//下载次数
@property (nonatomic,copy) NSString *icon;//图片url
+(instancetype) appWithDict:(NSDictionary *)dict;
@end
App.m
#import "App.h"
@implementation App
+(instancetype) appWithDict:(NSDictionary *)dict
{
App *app = [[App alloc]init];
//把字典里面的元素变成实体对象
[app setValuesForKeysWithDictionary:dict];
return app;
}
@end
2.在storyboard中拖入UITableView控件,并设置其代理和数据源代理,导出到ViewController中,在ViewController.h中添加相应的协议
@interface ViewController : UIViewController
<UITableViewDataSource,UITableViewDelegate>
@end
3.ViewController.h中,导入App.h, 并定义属性,详细如下:
#import "ViewController.h"
#import "App.h"
@interface ViewController ()
//存放所有的实体数据
@property (nonatomic,strong) NSMutableArray *apps;
//创建下载图片的队列
@property (nonatomic,strong) NSOperationQueue *queue;
@property (weak, nonatomic) IBOutlet UITableView *tableView;
//定义一个字典,缓存所有下载的图片 key:是图片的下载地址 value:具体图片
@property (nonatomic,strong) NSMutableDictionary *images;
//定义一个字典,存放所有正在下载的操作
@property (nonatomic,strong) NSMutableDictionary *downLoadOperation;
@end
4.对需要用到的成员懒加载
-(<