157
147

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

iOS /tmpと/Cachesディレクトリの違いと運用方法

Last updated at Posted at 2013-04-18

/tmpと**/Caches**ディレクトリ内のファイルは、iTunesのバックアップ対象外でシステムにより自動で削除されます。
何となく使っていたら容量不足でアプリがクラッシュしてしまったので、2つの違いと運用方法について調べてみました。

パスの取得

Application_Home/tmp/
NSString *path = NSTemporaryDirectory();
Application_Home/Library/Caches/
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];

違い

ディレクトリ ドキュメント記載の使用例 アクティブ中のシステムによる削除 非アクティブ中のシステムによる削除
/tmp 次のアプリの起動で保持する必要のないファイル ×
/Caches ダウンロードコンテンツ等

運用方法と注意

/tmp

  • アクティブ中にシステムによる削除を受けたくない一時ファイルに使用する。
  • アクティブ中はシステムに削除されないため、ファイル容量に注意して管理しなければならない。

##/Caches

  • アクティブ中にシステムが削除してもよい一時ファイルに使用する。
  • アクティブ中にシステムによって削除された場合でも不具合が発生しない作りにしなければならない。

まとめ

今回調べるきっかけになった問題は、画像の一時的な保存に**/tmp**を利用していて、システムによる削除が入るから大丈夫かなーって思って何も考えずにどんどん保存してたら10時間くらい後にアプリ容量が10GBくらいになり(iPhoneの空き容量が0GB)クラッシュしました。(適切な処理をしていればクラッシュしないかもしれません)
あとドキュメントはちゃんと読みましょうということでした。

ドキュメント

File System Programming Guide - About the iOS File System

157
147
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
157
147

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?