总体框架

- Manger是核心类,是功能接口类,提供对外和对内的API,负责任务的管理(新增、开始、暂停、取消、状态维护、并发控制、查询);session的管理(创建、reset、销毁)
- Cache负责缓存相关的工作,包括任务信息的缓存(1以pilist文件的形式保存执行中任务的元数据)、本地下载目录的维护
- DownLoadTask是执行下载任务的实体,维护下载任务相关的描述信息,进度、下载速度、起止时间、下载URL
- SessionDelegate实现了URLSessionDataDelegate、URLSessionTaskDelegate的委托协议,由manager管理,并持有manager,在协议的回调中,通过manager找到相应的task,调用task中处理回调的方法
细节学习
- Swift中命名空间的实现
- 简书
- 代码说话,定义名为wy的命名空间;通过协议来划分命名空间,只有遵循协议的类才拥有该命名空间
public final class WYKit<Base> {
public let base: Base
init(_ base: Base) {
self.base = base
}
}
// 定义命名空间的协议
public protocol WYKitCompatible {
associatedtype CompatibleType
var wy: CompatibleType { get }
}
// 扩展协议,给出命名空间变量的默认实现
extension WYKitCompatible {
public var wy: WYKit<Self> {
get {
return WYKit(self)
}
}
}
// 扩展String实现命名空间wy
extension String: WYKitCompatible{ }
// String中命名空间wy下的函数
extension WYKit where Base == String {
public func test() -> Base {
return base + " test"
}
}