NSCache-Swift
NSCacheNSCache 好像没有怎么经常用到过? nonono 我们常用的
上边的话摘自Apple 文档中,大概就是说(Google 翻译的)
当一个 NSCache 与 可变的集合有几点不同
上边的这一大段话都是来自文档,大概了解之后就是说,NSCache 对缓存有很高效的性能。 使用我们也来做一个简单的图片缓存机制吧。 class ImgeLoader { let cache = NSCache() static let shareInstance = ImgeLoader() private init(){} func imgeForURL(urlString: String,completionHander: (image: UIImage?,url:String) -> Void) { //异步获取图片 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0)) { let cacheData = self.cache.objectForKey(urlString) as? NSData if let goodData = cacheData { let imge = UIImage(data: goodData) //返回主线程 dispatch_async(dispatch_get_main_queue(),{ completionHander(image: imge,url: urlString) }) } //如果没有图片则网络获取 let session = NSURLSession.sharedSession() let url = NSURL(string: urlString) let downloadTask = session.dataTaskWithURL(url!,completionHandler: { (data,res,error) in guard error == nil && data != nil else { completionHander(image: nil,url: urlString) return } let image = UIImage(data: data!) self.cache.setObject(data!,forKey: urlString) dispatch_async(dispatch_get_main_queue(),{ completionHander(image: image,url: urlString) }) }) downloadTask.resume() } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |