0

このNSUserDefaultsクラスを使用すると、アプリケーションまたはユーザー データに関連する設定とプロパティを保存できます。

今私は質問があります:

  1. (設定とプロパティ) どこに保存されますか? if => オブジェクトは、iOS の「デフォルト システム」と呼ばれるものに保存されます。次に、iOS の「デフォルト システム」とは

  2. どのくらいの期間保存されますか?

4

2 に答える 2

3

どこ?開発しているアプリの種類によって異なります。AppStore アプリケーションの場合、インストールされたアプリ フォルダーのサンドボックス フォルダー、より正確には Library/Preferences フォルダーにあります。設定を含む実際のファイルは、アプリのバンドル ID と一致する名前の PLIST (プロパティ リスト) ファイルです。

概して:

(/var/mobile/Applications/XXXX-XXXX-XXXXXX-XXXXXXXX/MyApp.app/Library/Preferences/com.mycompany.bundleid.plist

(XXXXなどはUUIDです)。

ジェイルブレイクされたデバイス用のアプリ (つまり、Cydia アプリ) を作成している場合、それは再び plist ファイルになり、その名前はバンドル ID と一致しますが、インストール先は次のとおりです。

/var/mobile/Library/Preferences/com.mycompany.bundleid.plist

iOS デフォルト システムは Foundation フレームワーク、iOS 自体、および設定/設定/デフォルトを管理、保存、変更するファイルとディレクトリの一部です。

どのぐらいの間?繰り返しますが、作成しているアプリの種類によって異なります。通常の AppStore アプリの場合、既定値はファイルに保持されますが、ユーザーがアプリを削除しない限りのみです。アプリが削除されると、サンドボックス全体、アプリ バンドル、およびもちろんユーザーのデフォルトも失われます。永遠に、不可逆的に。

システム アプリのディレクトリ (/Applications) にあるジェイルブレイクされたアプリケーションを開発する場合、ユーザーがパッケージ/アプリケーションを削除しても、ユーザーのデフォルト ファイルは /var/mobile/Library/Preferences で利用できます。 Cydia のバッキング パッケージ マネージャー) は、パッケージに最初に含まれていたファイルのみを記録します。これは、既定のプロパティ リスト ファイル (アプリが最初にNSUserDefaultsクラスにアクセスしたときにのみ作成される) には当てはまりません)。ユーザーがファイルを手動で削除した場合、またはストックファームウェアに復元すると、なくなります。

于 2012-08-12T11:12:02.583 に答える
1

答え:

  1. アプリケーションのサンドボックス内。とにかくデフォルトに直接アクセスするつもりはないので、正確にどこが重要ではありません。

  2. アプリがデバイス上にある限り。アプリを削除すると、サンドボックスも削除されるため、そのときに削除されます。アプリを更新すると、同じサンドボックスが使用されるため、削除されません。

それが何であるかについては、ドキュメントの一部を引用します。

NSUserDefaults クラスは、デフォルト システムと対話するためのプログラム インターフェイスを提供します。デフォルト システムにより、アプリケーションはユーザーの好みに合わせて動作をカスタマイズできます。たとえば、アプリケーションが表示する測定単位や、ドキュメントが自動的に保存される頻度をユーザーが決定できるようにすることができます。アプリケーションは、ユーザーのデフォルト データベース内の一連のパラメーターに値を割り当てることによって、このような設定を記録します。パラメータは、起動時のアプリケーションのデフォルト状態またはデフォルトでの動作方法を決定するために一般的に使用されるため、デフォルトと呼ばれます。

実行時に、NSUserDefaults オブジェクトを使用して、アプリケーションが使用するデフォルトをユーザーのデフォルト データベースから読み取ります。NSUserDefaults は、デフォルト値が必要になるたびにユーザーのデフォルト データベースを開く必要がないように、情報をキャッシュします。定期的に自動的に呼び出される synchronize メソッドは、メモリ内キャッシュをユーザーのデフォルト データベースと同期させます。

于 2012-08-12T10:53:53.017 に答える