12

私はこのようなコードに出くわしました:

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

問題は、diskPathがnilに渡されたときに期待される動作を見つけることができなかったことです。 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はバンドル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

フォルダは次のようになっている必要があります。

  • Cache.db
  • Cache.db-wal(ここにキャッシュおよび保存された値を表示)
  • Cache.db-shm

私の経験では、以前のすべてのデバイスをデバイスフォルダーから削除する必要がありました。bundleIdentifierすべてのデバイスフォルダーを削除してアプリケーションを再実行する試みが見つからない場合は、その空のフォルダーに新しいフォルダーが作成され、からキャッシュされたファイルを表示できます。そこの

于 2022-01-04T09:44:52.947 に答える