NSURLSession和图像缓存

时间:2016-12-16 17:33:53

标签: ios swift cocoa swift2 nsurlcache

在我的iOS 9+ Swift 2.2应用程序中,我使用NSURLSession的dataWithRequest方法下载多个图像:

    let session: NSURLSession = NSURLSession(configuration: self.configuration)
    let request = NSURLRequest(URL: self.url)
    let dataTask = session.dataTaskWithRequest(request) { (data, response, error) in
        // Handle image
    }

    dataTask.resume()
    session.finishTasksAndInvalidate()

问题是:如何限制图像缓存大小?我可以看到我的应用程序在我的设备上使用了越来越多的磁盘空间。有没有办法保持图像缓存,但限制我的应用程序可以使用的大小?默认情况下是否到期?

1 个答案:

答案 0 :(得分:2)

NSURLSession使用共享NSURLCache来缓存响应。如果要限制共享缓存的磁盘/内存使用量,则应create新缓存并将其设置为默认缓存:

let URLCache = NSURLCache(memoryCapacity: 4 * 1024 * 1024, diskCapacity: 20 * 1024 * 1024, diskPath: nil)
NSURLCache.setSharedURLCache(URLCache)

您可以找到有关缓存here的更多信息。