私は最初のCocoaアプリを書いています。
今のところ、が必要になるたびNSUserDefaults
に、クラスのオブジェクトを初期化し、ローカルスコープで使用しています。
これは少し面倒です。だから私はそれが私のすべてのメソッドNSUserDefaults
で利用できるように宣言と初期化をどこに置くべきか疑問に思っていますか?Application Delegate
私は最初のCocoaアプリを書いています。
今のところ、が必要になるたびNSUserDefaults
に、クラスのオブジェクトを初期化し、ローカルスコープで使用しています。
これは少し面倒です。だから私はそれが私のすべてのメソッドNSUserDefaults
で利用できるように宣言と初期化をどこに置くべきか疑問に思っていますか?Application Delegate
ユーザーのデフォルトを使用しようとするときは、単にこのシングルトンを使用する必要があります
[NSUserDefaults standardUserDefaults];
必要な場所でデフォルトを呼び出すことには何の問題もありません。とにかくシングルトンです。
これをアプリデリゲートに入れると、NSUserDefaultsを取得するために同じ方法で呼び出すことになります。
アプリのデフォルトを初期化する場合、それを行う場所は+initialize
アプリデリゲートのメソッドです。
I'm initialising an object of the class and use it in the local scope.
全く必要ありません。UserDefaultsに何かを保存したい場合、cocoaはその共有インスタンス/シングルトンを提供します。
保存した値を更新する必要があるときはいつでも、それを呼び出し[NSUserDefaults standardUserDefaults]
て使用すると、1つのインスタンスのみが保存されます。
[[NSUserDefaults standardUserDefaults] setObject:yourObject forKey:@"yourKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
ユーザーのデフォルトを実行する良い方法は、気になる値にアクセスして変更するためのメソッドを持つ独自のクラスを作成することです(お気に入りのプレフィックスPFXDefaults
に置き換えます)。PFX
これはあなたが書くことを可能にします
[[PFXDefaults sharedDefaults] setUserName:@"Nate"];
それよりも
[[NSUserDefaults] setObject:@"Nate" forKey:@"userName"];
多くの場合、このクラスをプレフィックスにするか、それを除けば、.h
アプリデリゲートの表示可能な(ファイルで宣言された)プロパティにするのが便利です。
インターフェイスは次のPFXDefaults
ようになります
@interface PFXDefaults : NSObject
@property (nonatomic) NSString *userName;
@end
実装は次のようになります
static NSString * const PFXDefaultUserNameKey = @"PFXDefaultUserNameKey";
@implementation PFXDefaults
- (void)setUserAge:(NSString *)userName
{
[[NSUserDefaults standardUserDefaults] setObject:userName forKey:PFXDefaultUserNameKey];
}
- (NSInteger)userAge
{
return [[NSUserDefaults standardUserDefaults] stringForKey:PFXDefaultUserNameKey];
}
@end