バンドル地獄
いまさらながら、iOSアプリケーションプログラミングガイドを読んでいます。
http://developer.apple.com/jp/devcenter/ios/library/documentation/iPhoneAppProgrammingGuide.pdf
ファイルを保存する時に、Documentsに保存するのが良いのか?どこが良いのかで迷ったからです。
読み始めると、サンドボックスについて解説がありました。
アプリが最初にデバイスにインストールされるとき、システムがアプリのホームディレクトリを作成し、
サンドボックスのセキュリティ権限を設定すると、
そして、ホームディレクトリのパスは次の形式をとりますよと、
/ApplicationRoot/ApplicationID/
なるほど。
そしてiOSアプリケーションの各ディレクトリについてはこのように書いてありました。
/AppName.app
アプリ自体を含むバンドルのディレクトリです。
このディレクトリには何も書き込まないで下さい。
ここに書き込むと、署名が変化するから、アプリを起動することができなくなります。
このディレクトリはiOS2.1以降ではiTunesのバックアップなし
ただし、AppStoreから購入したアプリの最初の同期はiTuensに実行されると、、
ちゃんと書き込むなって書いてありますね。
/Documents
ユーザー文書や、アプリのデータを保存するのにはここを使います。
iTunesのバックアップ有り
ファイル共有もできますよと、なるほど
/Library/
このディレクトリはユーザーのデータファイル用には使用しないで下さい。
iTunesのバックアップ有り
/Library/Preference
アプリケーション固有の環境設定ファイルを保存する。
NSUserDefaults等で、、
iTunesのバックアップ有り
/Library/Caches
アプリを次に起動するまでの間、
アプリの更新中に残しておきたいアプリ固有のサポートファイルを書き込む。
iOS2.2以降ではiTunesのバックアップなし。
/tmp
アプリを次回起動するまで、保持する必要のない一時的なファイルを
書き込むのに使用する。
システムが古いファイルをこのディレクトリから削除する場合も、、
iOS2.1以降ではiTunesのバックアップなし。
保存はいるけど、バックアップはいらないという大きいデータや、
良く変更がかかるデータはCachesにいれておきましょう。
大きいデータをDocumentsにいれておくと、同期の度にバックアップをとるので時間がかかるからです。
もうちょっと公式文書をしっかり読みます。
PS:tmpやCachesディレクトリに書き込めないという事態に陥った、
と思っていましたが、iOS5で試したり、iOS4.3で試したりしていたので、
iOS5とiOS4で別々の場所にデータが保存されているだけでした、、くやしい。。