当前位置: 首页 > news >正文

【多线程-第四天-自己模拟SDWebImage的下载图片功能-自定义block和传递参数 Objective-C语言】

一、模拟SDWebImage

通知

1.我们用SDWebImage下载图片的时候,只需要这一句话,

[self.iconView sd_setImageWithURL:[NSURL URLWithString:appInfo.icon]];

我们能不能自己写一个类,也实现同样的功能,在写这个类的过程中,你们要改变自己的想法,代码不是从上往下一行一行写的,我们应该把不同的代码放在不同的类中来完成,

2.我们要做这件事,先要了解自定义Operation的知识,

通知

NSOperation是一个抽象类,无法直接使用,我们之前要使用NSOperation的话,用的是它的子类,之前用的分别是两个子类,

1)NSInvocationOperation:创建一个NSInvocationOperation,要指定一个方法,

2)NSBlockOperation:创建一个NSBlockOperation,要指定一个block,

为什么要自定义Operation,用blockOperation多方便啊,用blockOperation是不是得在当前类中去写这个block,在Controller里边去写这个block,在block里边去完成下载的操作,我们现在想干什么,我们是不是想把整个下载的操作给它分离出来,把整个下载操作给它挪到一个单独的类中来,并且以后下载的时候,还要异步下载,

我们可以把整个下载的操作,封装到一个Operation中,

3.我们新建一个项目

通知

name:02-自定义Operation

我们新建一个类,继承自NSOperation,叫做HMDownloaderOperation,

通知

我们新建好了这个Operation之后,里边要写什么呢,

通知

我们之前说过,使用Operation有两种方式,一种是调用start方法,另一种是添加到队列,不管是哪种方式,最终都在让这个操作执行什么,执行的是操作的main方法,

通知

我们要让它异步去下载,我们可以把操作添加到队列里边,让它自动去执行main方法,所以,我们下一步,要重写父类的main方法,

通知

重写完main方法以后,这个不着急写代码呢,先要创建一个@autoreleasepool,

通知

为什么要用@autoreleasepool呢࿰

相关文章:

  • 技术引领未来创新发展引擎
  • 库存扣减解决方案
  • 南京审计大学:《 面向工程审计行业的DeepSeek大模型应用指南》.pdf(免费下载)
  • 7. 【Vue实战--孢子记账--Web 版开发】-- 收支分类设置
  • MySQL 调优:查询慢除了索引还能因为什么?
  • 设计模式之责任链模式:原理、实现与应用
  • 各软件快捷键
  • 【CXX-Qt】2.5 继承
  • 基于认证的 Harbor 容器镜像仓库
  • 基于koajsAdmin+mongodb的后台管理快速开发框架安装运行记录
  • 深度学习-151-Dify工具之创建一个生成财务报表的智能体Agent
  • 【容器运维】docker搭建私有仓库
  • 【MySQL篇】复合查询
  • 数学爱好者写的编程系列文章
  • Linux | make和Makefile命令详细篇
  • 深度学习:让机器学会“思考”的魔法
  • webpack使用详细步骤
  • SpringBootAdmin-clinet自定义监控CPU、内存、磁盘等health
  • Linux:xxx is not in the sudoers file. This incident will be reported.
  • macOS Sequoia 15.3 一直弹出“xx正在访问你的屏幕”
  • 红场阅兵即将开始!中国人民解放军仪仗队亮相
  • 中华人民共和国和俄罗斯联邦关于全球战略稳定的联合声明
  • 奥园集团将召开债券持有人会议,拟调整“H20奥园2”本息兑付方案
  • 化学家、台湾地区“中研院”原学术副院长陈长谦逝世
  • 不主动上门检查,上海已制定14个细分领域“企业白名单”甄别规则
  • 上海优化营商环境十大攻坚突破任务中,为何第一项是实施世行对标改革?