Releases: Danie1s/Tiercel
Releases · Danie1s/Tiercel
3.2.2
3.2.1
3.2.0
之前 Tiercel 3.0.0 版本已经针对批量操作进行大量优化,足以应付数百个下载任务批量操作的需求。但我万万没想到竟然有人会在手机端上同时下载成千上万的文件,显然这种做法是不正确的,手机的性能非常有限,就算是性能很好的电脑,也不应该这么做。正常来说如果同时下载的文件达到上百个的话,最好就把它们压缩成一个文件进行下载,节省大量的资源,这才是最优的做法。但既然有开发者发现 Tiercel 在批量操作时还是会产生性能方面的问题,那也证明了它还存在继续优化的空间,于是我再次对批量操作方面进行优化,达到了应付上万个下载任务批量操作的要求。但我还是再次强调,这种大量文件同时下载的做法是非常不合理的,对于 Tiercel 使用的常见问题和注意事项,请查看 常见问题
- 进一步提升批量操作的性能
- 减少内存占用
- 不再保留原始的
URLSessionDownloadTask
,如果下载任务出现错误,会保留response
- 对
error
和response
进行持久化 - 对
SessionManager
的download
和multiDownload
方法添加了回调 - 暴露
UnfairLock
和Protector<T>
,新增Debouncer
,方便开发者使用 - 优化各种状态回调的逻辑
- 优化代码逻辑
- 更新 Demo
3.1.1
3.1.0
全面进化!
Tiercel 3.0 大幅提高了性能,拥有更完善的错误处理,提供了更多方便的 API。从 Tiercel 2.0 升级到 Tiercel 3.0 并不会很困难,强烈推荐所有开发者都进行升级,具体请查看 迁移指南
改进
- 大幅提高
multiDownload(_:headersArray:fileNames:)
、totalSuspend(onMainQueue:handler:)
、totalCancel(onMainQueue:handler:)
、totalRemove(completely:onMainQueue:handler:)
等批量操作的速度 - 改用字典来匹配任务,提高
fetchTask(_:)
方法的性能 - 改用 iOS 中性能最高的锁
os_unfair_lock
进行线程同步 - 更完善的错误处理,任何错误都会打印出来
- 将
TiercelLog
改成struct Logger: Logable
,开发者可以取消所有的默认打印,也可以自定义Logger
- 修改部分属性名称和方法名称,更加规范
- 提高线程安全
新增
Cache
支持自定义下载模块的文件夹- 支持 iOS 13 的低数据模式访问限制和昂贵网络访问限制
- 支持改变单个任务在所有任务中的位置
- 支持对所有任务进行排序
- 增加直接对任务进行操作的API,如:
sessionManager.cancel(task)
- 添加一个统一回调
completion(onMainQueue:handler:)
方法,把success(onMainQueue:handler:)
方法和failure(onMainQueue:handler:)
方法合并在一起,避免代码分隔 - 增加下载速度、剩余时间等信息的字符串版本,方便使用
修复
controlExecuter
每次调用完毕后赋值为nil
,避免混乱- 增加
Cache
的invalidate
方法,修复Cache
的内存泄漏 - 改进
Demo
中的代码
2.4.1
这应该是 Tiercel 2 的最后一个版本,即将移除 NSCoding
的兼容代码,如果之前没有升级到 2.3.0
版本的使用者,请务必先升级到此版本作为过渡
- 添加 Swift Package Manager 支持
DownloadTask
暴露originalRequest
、currentRequest
、response
、statusCode
属性- 改进下载成功的判断:在
DownloadTask
完成后,会进一步判断statusCode
,只有200 <= statusCode < 300
才算成功,否则失败 - 优化部分代码
2.3.0
2.2.1
更加Swifty!更加安全!
- 类名、结构体名重构,更加Swifty
- 更多的线程同步,更加安全
- 初始化
SessionManager
时,可以传入自定义队列,Tierecl回调都在此队列中执行
- 初始化
- 增加回调执行队列选择,适应更复杂的使用场景
onMainQueue
参数控制回调是否在主队列上执行,如果onMainQueue
传false
,则会在SessionManager
初始化时指定的队列上执行
- 优化下载速度的计算方式