标签:
所谓缓冲池,其实就是一个容器,能够存放多个对象
indexPath
可以判断操作是否已经在进行中
字典
:按照key
,可以通过下载图像的 URL
(唯一定位网络资源的字符串)小结:选择字典作为操作缓冲池
/// 操作缓冲池
@property (nonatomic, strong) NSMutableDictionary *operationCache;
- (NSMutableDictionary *)operationCache {
if (_operationCache == nil) {
_operationCache = [NSMutableDictionary dictionary];
}
return _operationCache;
}
// 异步加载图像
// 0. 占位图像
UIImage *placeholder = [UIImage imageNamed:@"user_default"];
cell.iconView.image = placeholder;
// 判断操作是否存在
if (self.operationCache[app.icon] != nil) {
NSLog(@"正在玩命下载中...");
return cell;
}
// 2. 将操作添加到操作缓冲池
[self.operationCache setObject:downloadOp forKey:app.icon];
// 3. 将下载操作添加到队列
[self.downloadQueue addOperation:downloadOp];
修改占位图像的代码位置,观察会出现的问题
[self.operationCache removeObjectForKey:app.icon];
self
的编写方法:__weak typeof(self) weakSelf = self;
dealloc
辅助分析- (void)dealloc {
NSLog(@"我去了");
}
self
,视图控制器会在下载完成后被销毁weakSelf
,视图控制器在第一时间被销毁标签:
原文地址:http://www.cnblogs.com/donghaoios/p/5089746.html