2009-06-02 15 views
0

私が開発しているアプリケーションでは、ユーザ名とパスワードを生成して[NSUserDefaults standardUserDefaults]に保存しています。そこから取得できるシステム全体の情報がいくつかあることはわかっています。それは電話のすべてのアプリケーションがそこにあるすべてのものにアクセスできることを意味しますか?私は現在、他のアプリケーションとの競合を避けるために、私のアプリケーション名に関連する文字列をそこに使用しているキーのプレフィックスを付けていますが、これは必要ですか?もしそうなら、そのような衝突を避けるより良い方法がありますか?NSUserDefaultsの衝突について心配する必要がありますか?

答えて

1

NSUserDefaultsは、「検索パス」の抽象概念を使用してデフォルト値を検索します。カスタマイズしない限り、標準のユーザーデフォルトオブジェクトは3か所に表示されます。起動引数、アプリケーションの設定、システム環境設定(グローバルなローカライゼーションオプションなど)などが含まれます。複数のアプリケーション間で同じ環境設定を共有したい場合は、他の検索パスの識別子を手動で追加することもできます(iPhoneでこれを試していないので、Cocoa Touchで利用できるかどうかわかりません。 OS X上でのみこれを行うことができます)。

システム全体の環境設定のいずれかと競合する可能性がありますが、アプリケーションの検索パスが最初に検索されるので問題はありません。

2

NSUserDefaultsはシステム全体ではありません。あなたの好きな名前を付けてください、あなたは大丈夫でしょう。 :)

8

また、ユーザーのデフォルトではなく、キーチェーン内にユーザー名とパスワードを格納する必要があります。ユーザーのデフォルトにそれらを保存すると、Macにデータをバックアップするときにスヌーピングまで開くことができます。

関連する問題