追踪 2.0.0

Track 2.0.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布时间最新发布2016年9月
SPM支持 SPM

maquannene 维护。



Track 2.0.0

  • maquannene

Track 是由 Swift 编写的线程安全缓存。由 DiskCache 和 MemoryCache 组成,支持 LRU。

功能

  • 线程安全:通过 dispatch_semaphore_t lockDISPATCH_QUEUE_CONCURRENT 实现。缓存方法线程安全且无死锁。

  • LRU:通过链表实现,速度快。您可以通过函数管理缓存,限制条目数量、条目年龄和内存使用,以消除最少使用对象。

  • 支持异步和同步操作。

  • 缓存实现 SequenceType Generator,支持 subscript for ... in map flapmap filter

使用

基本使用

支持同步和异步设置、获取、移除对象、移除所有和下标。

let track = Cache.shareInstance

track.set(object: "object", forKey: "key")

track.object(forKey: "key")

track.removeObject(forKey: "key") { (cache, key, object) in }

track.removeAllObjects { (cache, key, object) in }

track["key"] = "object"

print(track["key"])

其他使用

MemoryCache 和 DiskCache 具有LRU功能,因此它们可以根据 countLimitcostLimitageLimit 删除最少使用对象。

let diskcache = DiskCache.shareInstance

diskcache.countLimit = 20

diskcache.costLimit = 1024 * 10

let memorycache = MemoryCache.shareInstance

memorycache.trim(toAge: 1000) { (cache, key, object) in }

memorycache.trim(toCount: 10) { (cache, key, object) in }

新增功能:SequenceType 生成器

缓存支持线程安全的 for ... in map forEach

let cache: Cache = Cache.shareInstance

for i in 1 ... 5 {
    cache.set(object: "\(i)", forKey: "\(i)")
}

for object in cache {
    print(object)
}
output: ("5", 5) ("4", 4) ("3", 3) ("2", 2) ("1", 1)
cache.forEach {
    print($0)
}
output: ("1", 1) ("2", 2) ("3", 3) ("4", 4) ("5", 5)
let values = cache.map { return $0 }

print(values)
output: [("5", 5), ("4", 4), ("3", 3), ("2", 2), ("1", 1)]

安装

CocoaPods

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

支持 Swift 3.0

pod 'Track'

支持 Swift 2.3

pod 'Track', :git => 'https://github.com/maquannene/Track.git', :branch => 'feature/S-2.3'

如果您想使用 Track 的新功能

pod 'Track', :git => 'https://github.com/maquannene/Track.git'

Carthage

github "maquannene/Track"

手动安装

  1. 下载并将 /Track 文件夹拖放到您的项目中。
  2. 恭喜!

感谢

非常感谢 YYCache 和 PINCache。一些想法来自它们。

许可证

Track 在 MIT 许可下发布。

如果你来自天朝点击查看更多实现细节文章