我需要在同一个类的不同方法中多次将数据保存到NSUserDefaults,每次我需要按以下方式初始化它:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
是否可以只将其初始化一次?
例如,将其声明为属性,然后在UIViewController中的 - (void)viewDidLoad中初始化它们。
答案 0 :(得分:2)
没有必要,因为它是单例模式,因此 NSUserDefaults
只会自动维护一个实例。
@NikolaiRuhe的评论后更新(非常感谢):
没有必要,因为NSUserDefaults
提供了一个可用于大多数目的的默认实例,它由您调用的sharedUserDefaults
类方法公开。从技术上讲,它不是 singleton ,因为您不必使用此默认实例。但是,如果您始终使用sharedUserDefaults
,则只会创建一个实例。
如果您对保存类型感兴趣,请在类中创建方法以执行加载和保存到NSUserDefaults
;例如:
- (void)loadConfig
{
NSUserDefaults *userDefaults = [NSUserDefaults sharedUserDefaults];
_someObjectProperty = [userDefaults objectForKey:@"someProperty"];
_someIntProperty = [userDefaults integerForKey:@"anotherProperty"];
}