NSUserDefaults可以只为整个类初始化一次

时间:2016-01-08 10:00:04

标签: objective-c nsuserdefaults

我需要在同一个类的不同方法中多次将数据保存到NSUserDefaults,每次我需要按以下方式初始化它:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

是否可以只将其初始化一次?

例如,将其声明为属性,然后在UIViewController中的 - (void)viewDidLoad中初始化它们。

1 个答案:

答案 0 :(得分:2)

没有必要,因为它是单例模式,因此NSUserDefaults只会自动维护一个实例。

@NikolaiRuhe的评论后更新(非常感谢):

没有必要,因为NSUserDefaults提供了一个可用于大多数目的的默认实例,它由您调用的sharedUserDefaults类方法公开。从技术上讲,它不是 singleton ,因为您不必使用此默认实例。但是,如果您始终使用sharedUserDefaults,则只会创建一个实例。

如果您对保存类型感兴趣,请在类中创建方法以执行加载和保存到NSUserDefaults;例如:

- (void)loadConfig
{
    NSUserDefaults *userDefaults = [NSUserDefaults sharedUserDefaults];
    _someObjectProperty = [userDefaults objectForKey:@"someProperty"];
    _someIntProperty = [userDefaults integerForKey:@"anotherProperty"];
}