12

我遇到过如下代码:

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

问题是当 diskPath 被传递为零时,我无法找到预期的行为。 NSURLCache 文档没有明确描述这种情况,我也无法通过自己的测试弄清楚。

缓存存储在哪里?还是该代码高于错误?

谢谢。

4

5 回答 5

15

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

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

于 2012-07-04T15:56:09.897 回答
3

从您链接的文档中:

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

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

[array writeToFile: nil atomically:NO];

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

希望这可以帮助!

于 2012-07-02T19:53:23.927 回答
2

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

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

其中 com.mycompany.appname 是您的 Bundle ID

于 2015-04-28T15:52:47.137 回答
0

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

(App Folder)/Library/Caches/com.mycompany.appname/xxxx/Cache.db
于 2018-06-15T06:29:37.923 回答
0

您可以在路径下找到模拟器的缓存文件:

~/Library/Developer/CoreSimulator/Devices/UDID/data/Containers/Data/Application/UDID/Library/Caches/BUNDLE_IDENTIFIER

文件夹必须如下所示:

  • 缓存.db
  • Cache.db-wal(在此处查看缓存和存储的值)
  • 缓存.db-shm

根据我的经验,我必须从设备文件夹中删除所有以前的设备,如果您找不到bundleIdentifier尝试删除所有设备文件夹并再次运行应用程序,那么将在该空文件夹上创建新文件夹,您可以从那里

于 2022-01-04T09:44:52.947 回答