2010年5月15日土曜日

iPhoneで良く使われるディレクトリとPathの取得



セキュリティのため、アプリケーションが書き込むことのできる場所は数か所だけです。アプリケーションが実装されるとアプリケーションのためのホームディレクトリが作成されます。
詳細はここを参照。
iPhoneアプリケーションのディレクトリ


ディレクトリ
説明
/AppName.app
アプリケーション自体を含むバンドルディレクトリ。アプリケーションは署名されている必要があるため、実行時にこのディレクトリの内容を変更してはなりません。変更を加えると、後でアプリケーションを起動できなくなります。
→すなわち、icon.pngファイルを書き換えることはできない
iPhone OS 2.1以降では、このディレクトリの内容がiTunesによってバックアップされません。ただし、App Storeから購入したアプリケーションの最初の同期はiTunesによって実行されます。
/Documents/
データファイルを書き込むために使用するディレクトリ。ユーザデータや、定期的にバックアップする必要があるその他のデータを保存するために、このディレクトリを使用します。
このディレクトリの内容はiTunesによってバックアップされます。
/Library/Preferences
環境設定ファイルを保存。環境設定ファイルを直接作成しないでください。その代わりに、NSUserDefaultsクラスまたはCFPreferencesAPIを使用して、アプリケーションの環境設定を取得したり設定したりします(「Settingsバンドルの追加」を参照)。
このディレクトリの内容はiTunesによってバックアップされます。
/Library/Caches
アプリケーションが終了しても次の起動まで保持しておきたいアプリケーション固有のサポートファイルを書き込む。ただし、iTunesは、デバイスの完全復元中にこれらのファイルを削除するので、必要に応じて再作成する必要がある。
iPhone OS 2.2以降では、このディレクトリの内容がiTunesによってバックアップされません。
/tmp/
アプリケーションが終了しても次の起動まで保持しておきたい一時ファイルを書き込む。
iPhone OS 2.1以降では、このディレクトリの内容がiTunesによってバックアップされません。

FoundationフレームワークのNSHomeDirectory関数は、最上位のホームディレクトリ、つまり、アプリケーション、DocumentsLibrary、およびtmpの各ディレクトリを含んでいるディレクトリへのパスを返します。この関数のほかに、NSSearchPathForDirectoriesInDomains関数およびNSTemporaryDirectory関数を使って、DocumentsCaches、およびtmpの各ディレクトリへのパスを取得することもできます。
NSSearchPathForDirectoriesInDomains関数は、もともとMac OS X用に設計されているため、1つのパスではなくパスの配列を返します。iPhone OSでは、その結果の配列に、要求したディレクトリへのパスが1つ含まれています。
アプリケーションのDocuments/ディレクトリへのファイルシステムパスの取得

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
ユーザの環境設定を読み書きするには、NSUserDefaultsクラスまたはCFPreferences APIを使用します。これらのインターフェイスにより、Library/Preferences/ディレクトリへのパスを作成したり、環境設定ファイルのディレクトリへ読み書きしたりする必要がなくなります。これらのインターフェイスの使用の詳細については、「Settingsバンドルの追加」を参照してください。
アプリケーションバンドルにサウンド、画像、またはその他のリソースが含まれている場合には、NSBundleクラスまたはCFBundle不透過型を使用してこれらのリソースをロードする必要があります。バンドルは、アプリケーション内のリソースの格納場所についてもともと情報を備えています。加えて、バンドルはユーザの言語に関する環境設定を認識し、デフォルトのリソースの代わりにローカライズ済みのリソースを自動的に優先して選択することができます。バンドルの詳細については、「アプリケーションバンドル」を参照してください。

0 件のコメント:

コメントを投稿