在哪里声明和初始化NSUserDefaults等?

时间:2012-12-24 12:28:43

标签: objective-c cocoa

我正在写我的第一个Cocoa应用程序。

现在,每次我需要NSUserDefaults时,我都会初始化类的对象并在本地范围内使用它。

这有点乏味。所以我想知道我应该在哪里放置NSUserDefaults声明和初始化,以便它可以用于我的所有Application Delegate方法?

4 个答案:

答案 0 :(得分:3)

在尝试使用用户默认值时,您应该只使用此单例

[NSUserDefaults standardUserDefaults];

答案 1 :(得分:1)

在任何需要的位置调用默认值都没有错。无论如何,这是一个单身人士。

如果你把它放到你的app委托中,你就会以同样的方式调用它来获取NSUserDefaults。

如果您要初始化应用的默认设置 - 可以在应用代理的+initialize方法中执行此操作。

答案 2 :(得分:0)

I'm initialising an object of the class and use it in the local scope.

根本不需要。如果你想在UserDefaults中保存一些东西,cocoa会为你提供一个共享的实例/单例。

每当您需要更新已保存的值时,请致电[NSUserDefaults standardUserDefaults]并使用它,并且只会为您保存一个实例。

[[NSUserDefaults standardUserDefaults] setObject:yourObject forKey:@"yourKey"];
[[NSUserDefaults standardUserDefaults] synchronize];

答案 3 :(得分:0)

执行用户默认设置的一个好方法是创建自己的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