block
来源:互联网 发布:人工智能学校排名 编辑:程序博客网 时间:2024/06/05 19:56
block会有循环引用的风险--对外部
1。用self时小心
2.借助dealloc方法,判断是否循环引用
- (void)dealloc
{
NSLog(@"8888-----");
}
解决方法 把self定义成弱引用
__weak typeof(self) weakSelf =self;
NSBlockOperation *downloadOp = [NSBlockOperationblockOperationWithBlock:^{
NSLog(@"正在下载中......");
// 1. 下载图片(二进制)
NSData *data = [NSDatadataWithContentsOfURL:[NSURLURLWithString:app.icon]];
UIImage *image = [UIImageimageWithData:data];
// 2. 将下载的数据保存到模型
if (image) {
[weakSelf.imageCachesetObject:image forKey:app.icon];
// 将图片写入沙盒
[data writeToFile:[selfcachePathWithUrl:app.icon]atomically:YES];
}
// 3. 将操作从操作缓冲池删除
[weakSelf.operationCacheremoveObjectForKey:app.icon];
// 4. 更新UI
[[NSOperationQueuemainQueue] addOperationWithBlock:^{
// 刷新当前行
[weakSelf.tableViewreloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationNone];
}];
}];
- Block
- block
- Block
- block
- block
- block
- block
- block
- block
- Block
- block
- Block
- Block
- Block
- Block
- block
- Block
- block
- (大数据分析-3)HBASE Review
- PCA 浅显易懂的数学原理
- Android应用架构系列——ListView的模板化
- C# 系统应用之TreeView控件显示树状磁盘文件目录及加载图标
- android Service(一)
- block
- 不安装oracle客户端,用plsql连接oracle
- 轻乳酪蛋糕
- WINDOWS DOS命令大全
- spring加载hibernate映射文件的几种方式
- How to add Oracle JDBC driver in your Maven local repository
- 直接启动SDK Manager: $ADNROID_HOME/tools/android
- c++输出输入流
- Linux android studio :'tools.jar' seems to be not in Android Studio classpath.