我正在使用NSCache
来缓存对象。有没有办法一次删除所有缓存?
我使用以下方法来缓存:
class VC: UIViewController {
static let userCache = NSCache<NSString, User>()
func getUser(fromId id: String, completion: @escaping (_ user: User) -> Void) {
if let cachedVersion = VC.userCache.object(forKey: id as NSString) {
print("using cached user from id")
completion(cachedVersion)
return
}
// retrieve new instance of object
}
}
但我看到文档和数据部分随着时间的推移而增加(目前为140MB+(。我尝试使用以下方法清除缓存,但没有成功:
VC.userCache.removeAllObjects()
有没有办法检索NSCache
的旧实例,这样我就不必在每次加载应用程序时都创建新实例?或者有没有办法在应用程序加载时删除所有缓存的对象?
你的意思是 removeAllObjects(( 不起作用?您确定使用的内存来自此缓存吗?如果缓存由多个 ViewController 使用,则应在这些 ViewController 之外创建和管理它,这样您就不会创建多个实例,例如 CacheManager 类或类似的东西。
还可以在缓存上设置countLimit和totalCostLimit属性,以便它的大小不会膨胀。