2012-07-02 67 views
9

我遇到的代碼看起來像這樣:在iOS上,如果diskPath存儲NSURLCache緩存:nil?

NSURLCache *URLCache = 
    [[NSURLCache alloc] initWithMemoryCapacity:1024 * 1024 
            diskCapacity:1024 * 1024 * 5 
             diskPath:nil]; 

的問題是,我一直沒能找到什麼時候diskPath傳遞零的預期行爲。 NSURLCache docs沒有明確描述這種情況,也沒有用我自己的測試來弄清楚。

緩存在哪裏存儲?或者是代碼上面的錯誤?

謝謝。

回答

12

今天我有空閒時間做一些測試並找到了答案。沒有什麼令人興奮的,但如果你很好奇:

默認情況下,iOS將使用一個名爲Cache.db的數據庫,並且,作爲@qegal提到的,將存儲在默認位置下。

3

從您的鏈接的文檔:

在iOS中,path是應用程序的默認緩存目錄的子目錄中存儲的磁盤緩存(如果它不存在的子目錄中創建的名稱)。

我最好的猜測是,如果path爲零(這意味着你沒有指定一個子目錄),緩存也只是存儲在默認的緩存目錄(而不是子目錄)。我現在無法測試它,因爲我遇到了一些計算機問題。我也猜測它會被存儲在默認的緩存目錄中,因爲我確信在運行時或編寫代碼時會出現某種警告或錯誤。我知道,如果我寫的是這樣的:

[array writeToFile: nil atomically:NO]; 

,因爲我沒有指定哪些文件應該被寫入路徑,我會得到一個錯誤。

希望這會有所幫助!

+0

你能分享你將如何確定緩存是否被存儲在默認目錄?我可以在我的最後嘗試。 – jlmendezbonini

+0

@jlmendezbonini你的意思是你如何驗證緩存是否存儲在所有? – pasawaya

+0

是的。我可能會漏掉一些明顯的如何做到這一點。 – jlmendezbonini

2

下的iOS 8.2 Cache.db文件存放在:

(App Folder)/Library/Caches/com.mycompany.appname/Cache.db 

哪裏com.mycompany.appname是你的包ID