相同的代码不要出现两次web
相同功能的代码能够及时抽取,以备往后复用,不要重复建立轮子
缓存
明确每一步的目标
数据结构
小步走并发
测试(每个改动都有可能出现错误)函数
新建方法测试
复制代码spa
根据代码调整参数和返回值代理
调整调用位置代码指针
测试code
示意图
新建类
抽取主方法
在 .h
中定义方法接口,明确该方法是否适合被外部调用
在 .m
中增长方法实现
将主方法复制到新方法中
复制相关的子
方法
复制相关属性
检查代码的有效性
调整内部变量,让 NSURL
由调用方传递,保证代码的灵活性
复制代理方法,
注释更新 UI
部分的代码
使用 #warning TODO
提醒本身此处有未完成的工做
这样作能够不影响重构的节奏
调整视图控制器 测试
重构方法执行
调整视图控制器代码,删除被移走代码
再次测试,确保调整没有失误!
确认重构的接口
须要进度
回调
须要完成&错误
回调
定义类方法,传递回调参数
实现类方法,记录住回调 block
调整调用方法
增长 block
实现
测试
增长已经下载完成的回调
进度回调(100%)
完成回调(路径)
断言
暂停操做
测试,测试,测试!
新问题:若是连续点击,会重复下载,形成错乱!
解决办法:创建一个下载管理器的单例,负责全部的文件下载,以及下载操做的缓存!
示意图
创建单例
接管
下载操做
定义接口方法
实现方法
替换方法
测试
操做缓存
暂停实现
最大并发数,NSOperationQueue+NSOperation
block 是 C
语言的数据结构
是预先准备好的代码,在须要时执行,相似于匿名函数指针
能够被看成参数传递
在须要时,能够对 block
进行扩展
若是当前方法不执行 block
,须要使用 属性
记录
block
属性须要使用 copy
描述符
对于必须传递的 block
回调,能够使用 断言