6

OK、認めNSUserDefaultsますが、Mac 固有のものであること (そして、私は過去 2 年間 Mac プログラマーでした) は、私があまり掘り下げていないことの 1 つです... それで、ここにいくつかの問題/質問があります。に出くわしました:

NSUserDefaults基本的にNSMutableDictionaryとして書かれていることを理解してい.plistます。

私の質問:

  1. OS X 10.7 (Lion) を実行していて、Sandbox を有効にしている場合、アプリの .plist ファイルはどこにありますか? (両方~/Library/Preferences/com.example.myapp.plistで検索しました~/Library/Containers/com.example.myapp/Data/Library/Preferences/com.example.myapp.plistが、どちらも有効ではないようです

  2. .plistこのファイルは、アプリの初回起動時に作成されると理解していますよね?

  3. registerDefaults:は、アプリケーションの起動時に (たとえば で) 使用され、すぐにファイルに保存され、ある時点で別の値が設定された場合にのみ変更awakeFromNibされるデフォルト値のディクショナリを提供します。正しいですか?.plist

  4. 特定の Key-Value ペアを設定する場合、そのペアは自動的にすぐに.plistファイルに保存されますか? もしそうなら、なぜ/いつ使用する必要がありますsynchronizeか? (何らかの値が設定されるたびにそれを使用するのはやり過ぎですか、それとも特別な場合のために予約する必要がありますか?)


補足 :osxタグの使用について誰も文句を言わないことを願っています。しかし、私の (ほとんどの) OSX 関連の質問に対する Cocoa Touch / iOS 関連の回答を見るのは本当にうんざりです。それで、ここにいます... :-)


編集:この件に関する非常に役立つ洞察については、受け入れられた回答とその下のコメントをご覧ください。

4

1 に答える 1

3

回答 1. Lion ではホーム ディレクトリが非表示になっているため、パスを入力することはできません (フォルダが表示されないと、Finder からフォルダ内に入ることができません)。Path Finderを使用して、隠しディレクトリを移動できます。

回答 2.常にではありません。1 つのアプリケーションに複数の plist を含めることができます。最初の起動時に作成されるものはほとんどなく、特定のアクションで作成されるものはほとんどありません。実際には、plist ファイルがいつ作成され、どのように使用されるかによって異なります。

回答 3. registerDefaults:レジスタの既定値は、ユーザーがそのプロパティに他の値を設定していない場合です。後でアプリを開いたときに、ユーザーが保存したものは上書きされません。どこでも使用できますが、記載のとおり、使用は 1 回です。

回答 4. Mac OSX アプリケーションの場合、パフォーマンスややり過ぎの問題はありませんが、iOS の場合は問題があります。常に使用する方が良い[[NSUserDefaults standardUserDefaults] synchronize];

于 2013-02-25T08:29:23.403 に答える