
我检查了文档和其他问题,找不到任何相关的内容.
所以我的问题是:Swift是否带有LRUCache?如果是,如何使用它,如果没有:我可以使用ObjectiveC版本并仍然保持我的Swift类型安全吗?
解决方法 包装NSCache(用于类型约束)并不是那么辛苦.struct LRUCache<K:AnyObject,V:AnyObject> { private let _cache = NSCache() var countlimit:Int { get { return _cache.countlimit } nonmutating set(countlimit) { _cache.countlimit = countlimit } } subscript(key:K!) -> V? { get { let obj:AnyObject? = _cache.objectForKey(key) return obj as V? } nonmutating set(obj) { if(obj == nil) { _cache.removeObjectForKey(key) } else { _cache.setobject(obj!,forKey: key) } } }}let cache = LRUCache<Nsstring,Nsstring>()cache.countlimit = 3cache["key1"] = "val1"cache["key2"] = "val2"cache["key3"] = "val3"cache["key4"] = "val4"cache["key5"] = "val5"let val3 = cache["key3"]cache["key6"] = "val6"println(( cache["key1"],cache["key2"],cache["key3"],cache["key4"],cache["key5"],cache["key6"])) 结果:
(nil,nil,Optional(val3),Optional(val5),Optional(val6))总结
以上是内存溢出为你收集整理的ios – LRU Cache的标准实现全部内容,希望文章能够帮你解决ios – LRU Cache的标准实现所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)