在iOS上,如果diskPath:nil,则存储NSURLCache缓存?

时间:2012-07-02 19:35:56

标签: ios nsurlcache

我遇到过这样的代码:

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

问题是,当diskPath传递nil时,我无法找到预期的行为。 NSURLCache docs没有明确描述这种情况,也没有用我自己的测试来解决这个问题。

缓存存储在哪里?或者该代码是否在错误之上?

感谢。

4 个答案:

答案 0 :(得分:14)

我今天有空闲时间做一些测试并找到答案。没有什么令人兴奋的,但如果你很好奇:

默认情况下,iOS将使用名为 Cache.db 的数据库,并且如提及的@qegal,将存储在默认位置。

答案 1 :(得分:3)

来自您的关联文档:

  

在iOS中,path是应用程序的默认缓存目录的子目录的名称,用于存储磁盘缓存(如果子目录不存在,则创建子目录)。

我最好的猜测是,如果path为nil(意味着您没有指定子目录),则缓存只会存储在默认缓存目录中(而不是存储在子目录中)。我现在无法测试它,因为我遇到了一些计算机问题。我也猜测它会存储在默认的缓存目录中,因为我确信你会在运行时或编写代码时遇到某种警告或错误。我知道如果我写了这样的话:

[array writeToFile: nil atomically:NO];

我会收到错误,因为我没有指定应该写入文件的路径。

希望这有帮助!

答案 2 :(得分:2)

在iOS 8.2下,Cache.db文件存储在:

Event

com.mycompany.appname是您的Bundle ID

答案 3 :(得分:0)

如果diskPath == xxxx,则Cache.db文件存储在:

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