Tiercel Versions Save

简单易用、功能丰富的纯 Swift 下载框架

3.2.2

1 year ago

修复可能出现死循环的问题

3.2.1

1 year ago

修复 success 重复调用

3.2.0

2 years ago

之前 Tiercel 3.0.0 版本已经针对批量操作进行大量优化,足以应付数百个下载任务批量操作的需求。但我万万没想到竟然有人会在手机端上同时下载成千上万的文件,显然这种做法是不正确的,手机的性能非常有限,就算是性能很好的电脑,也不应该这么做。正常来说如果同时下载的文件达到上百个的话,最好就把它们压缩成一个文件进行下载,节省大量的资源,这才是最优的做法。但既然有开发者发现 Tiercel 在批量操作时还是会产生性能方面的问题,那也证明了它还存在继续优化的空间,于是我再次对批量操作方面进行优化,达到了应付上万个下载任务批量操作的要求。但我还是再次强调,这种大量文件同时下载的做法是非常不合理的,对于 Tiercel 使用的常见问题和注意事项,请查看 常见问题

  • 进一步提升批量操作的性能
  • 减少内存占用
  • 不再保留原始的 URLSessionDownloadTask,如果下载任务出现错误,会保留 response
  • errorresponse 进行持久化
  • SessionManagerdownloadmultiDownload 方法添加了回调
  • 暴露 UnfairLockProtector<T>,新增 Debouncer,方便开发者使用
  • 优化各种状态回调的逻辑
  • 优化代码逻辑
  • 更新 Demo

3.1.1

3 years ago
  • 修复 iOS 12.0 - iOS 12.1 resumeData引起的 Bug
  • 优化断点续传判断的逻辑

3.1.0

3 years ago
  • 增加DownloadSessionManager的状态通知,使用方法请看 Wiki
  • 修改下载信息的计算间隔,提高性能
  • 修复multiDownload(_:headersArray:fileNames:)返回值问题

3.0.0

3 years ago

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,避免混乱
  • 增加Cacheinvalidate方法,修复Cache的内存泄漏
  • 改进Demo中的代码

2.4.1

3 years ago

这应该是 Tiercel 2 的最后一个版本,即将移除 NSCoding 的兼容代码,如果之前没有升级到 2.3.0 版本的使用者,请务必先升级到此版本作为过渡

  • 添加 Swift Package Manager 支持
  • DownloadTask 暴露 originalRequestcurrentRequestresponsestatusCode 属性
  • 改进下载成功的判断:在DownloadTask完成后,会进一步判断statusCode,只有200 <= statusCode < 300才算成功,否则失败
  • 优化部分代码

2.3.0

3 years ago
  • 使用更先进安全的Codable进行编码解码
    • NSCoding存在安全隐患,不再使用,新版本会兼容旧版本的持久化数据。
  • URLStirng改为URLConvertible,适应更多类型
    • 不再局限于String,更加灵活方便,同样开发者无需修改任何代码即可以兼容。
  • 优化部分代码
    • Task不再暴露给外界,目前统一返回DownloadTask

2.2.1

3 years ago
  • 修复回调时有可能出现的线程问题
  • 增加清除磁盘缓存时的回调

2.2.0

3 years ago
  • 类名、结构体名重构,更加Swifty
  • 更多的线程同步,更加安全
    • 初始化SessionManager时,可以传入自定义队列,Tierecl回调都在此队列中执行
  • 增加回调执行队列选择,适应更复杂的使用场景
    • onMainQueue参数控制回调是否在主队列上执行,如果onMainQueuefalse,则会在SessionManager初始化时指定的队列上执行
  • 优化下载速度的计算方式