从NSUserDefaults返回的值是不可改变的,即便是你在存储的时候使用的是可变的值。例如你使用mutable string做为“MyStringDefault”的值,当你做使用stringForKey:方法获取的值,这个值仍然是不可变的。
NSUserDefaults是单例,同时也是线程安全的
在使用NSUserDefaults的时候,
先看下下面的代码
NSDictionary* defaults = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation
NSLog(@"Defaults: %@", defaults);
是用来获取设备上的所有的NSUserDefaults的设置。
上面代码输出了
Defaults: {
如果想单独看某个key的设置,例如:
NSArray *array = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleKeyboards"];
NSLog(@"Keyboards: %@", array);
会输出
在看下面的代码
if([[NSUserDefaults standardUserDefaults] objectForKey:@"message"]==nil){
}
代码意思是判断NSUserDefaults的“message”key 在dictionaryRepresentation
设置“message”key为This_is_my_default_message。
在加上句[[NSUserDefaults standardUserDefaults] synchronize];,这样这个设置就存到默认参数中了。
也见过别人把默认参数的设置写到applicationDidFinishLaun
- (void)applicationDidFinishLaun
{
}
当然写到applicationDidFinishLaun
原文链接:http://friendlysong.blog.163.com/blog/static/32252439201281443611493/