2016-12-16 89 views
2

在我的iOS 9+雨燕2.2的應用程序,我下載多個圖像與NSURLSession的dataWithRequest方法:NSURLSession和圖像緩存

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

NSURLSession使用共享NSURLCache來緩存響應。如果你想限制共享緩存的磁盤/內存使用情況,你應該create一個新的緩存,並將其設置爲默認之一:

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

你可以找到一點關於緩存here

+0

設置緩存限制時,達到限制時會發生什麼情況?舊的緩存被替換爲新的緩存? – Tiois

+0

URLCache保留有關緩存響應的信息:創建響應時,上次使用時等。因此,如果沒有空間來保存新響應,URLCache會移除長期未使用的保存響應。 – Avt

+0

我目前沒有設置任何磁盤容量,它似乎沒有使用默認值(20MB的磁盤容量),我沒有在本地保存任何東西,我的應用程序正在使用60MB的文檔和數據... – Tiois