Swift codecov Swift 5.9 Platforms License

简介

SieveCache 是一个开源的 NSCache 的替代品,它的行为可预测且易于调试。 SieveCache 是 SIEVE 缓存的 Swift 实现,详情请参考 这里

安装

SieveCache 作为 Swift Package 分发,您可以将其导入到您的 Xcode 项目或其他基于 Swift 的代码库中。

注意: SieveCache 需要 Swift 5.9 (即 Xcode 15+) 才能构建,并且在 iOS 13+ 和 macOS 12+ 上运行。它应该TM可以 在其他平台上工作,但尚未经过测试。如果您能在其他平台上验证成功,请告知我。

要使用 Swift Package Manager 进行安装,请将其添加到您的 Package.swift 文件的 dependencies: 部分

.package(url: "https://github.com/GratefulGuru/SieveCache.git", from: "1.0.0"),

使用

您可以按如下方式创建 SieveCache 的实例

let cache = SieveCache<String, Int>()

这将创建一个默认大小(1000 个对象)的缓存,其中包含由 String 键入的 Int 值。 要向缓存添加对象,请使用

cache.setObject(99, forKey: "foo")

要获取缓存的对象,请使用

let object = cache.object(forKey: "foo") // Returns nil if key not found

您可以通过计数来限制缓存大小。 这可以在初始化时完成

let cache = SieveCache<URL, Date>(countLimit: 100)

或者在创建缓存之后

cache.countLimit = 100 // Limit the cache to 100 elements

当超出计数限制时,对象将自动从缓存中删除。 您还可以使用以下方法显式删除对象

let object = cache.removeObject(forKey: "foo")

或者,如果您不需要该对象,可以通过将其设置为 nil 来删除

cache.setObject(nil, forKey: "foo")

您还可以一次删除所有对象

cache.removeAllObjects()

在 iOS 和 tvOS 上,如果发生内存警告,缓存将自动清空。

性能

从缓存中读取、写入和删除条目均以恒定时间执行。 当缓存已满时,由于每次插入新值都需要删除元素,因此插入时间会略有下降。 这仍然应该是恒定时间。

鸣谢

SieveCache 框架主要是 Christian Wolf Johannsen 的工作成果。

(完整贡献者列表)