2011-08-04 33 views
3

大きなpdfファイルを表示する機能を含むマルチタスクアプリケーションを構築しています。ユーザーがファイルを表示するたびにファイルをダウンロードするのを避けるため、NSTemporaryDirectoryでファイルをダウンロードし、UIDocumentInteractionControllerを使用して「Quick Look」と「Open in iBooks」を提供します。NSTemporaryDirectoryのファイルを削除する場合

ユーザーのデバイス上のスペースを消費しないように、ユーザーがアプリケーションを終了するときにすべての一時ファイルを消去したいとします。私のアプリケーションはマルチタスクで、私のapplicationWillTerminateメソッドは決して呼び出されないので、ファイルは決して削除されません。いつNST ModernDirectoryをクリアするのが最善で、どうすればいいのですか?何か不足していますか?あなたはまた、iOSの上で正常に動作古いUNIXのトリックを利用することができます

事前

+0

どのように管理しましたか? – Ankush

答えて

5

のおかげで(私はそれを利用しているので、私は知っている):

  • ファイルを保存します。
  • 開いてください。
  • filedescriptorsを忘れないでください。
  • ファイルを削除します(これは魔法の部分です)。

効果は、ファイルを閉じない限り、ファイルが開いたままであることです。しかし、そのディレクトリエントリはなくなります。つまり、ファイルはディレクトリリストには表示されません。クールなことは、これらのフィールド記述子の1つを閉じるとすぐに、対応するファイルが自動的にディスクから完全に削除されることです。 closeを明示的に呼び出すか、アプリが終了するかクラッシュするかは関係ありません。これらの場合、OSによってファイルが削除されるため、心配する必要はありません。

ファイルを名前でアクセスすることができなくなったので、ファイル記述子で動作するようにコードを変更する必要があるという欠点があります。

0

applicationWillResignActive をAppdelegateで実行するのが最適です。

+0

Appleによると、アプリケーションがアクティブ状態から非アクティブ状態に移行しようとしているときに送信されます。これは一時的な中断(着信電話やSMSメッセージなど)やユーザーがアプリケーションを終了し、バックグラウンド状態に移行します。私はアプリケーションが正常に終了したときにファイルをクリアしたいだけです。何か案は? –

+0

明らかに 'applicationDidEnterBackground:'を使用してください。 – kelin

関連する問題