iOS开发随笔记之 常量声明和NSUserDefaults
在iOS中,常量声明一般使用2种方式
1、使用C语言的预处理方式
#define APP_NAME @“demo” #define kURL @“http://www.google.com”
2、使用externcnstc关键字,extern表示该变量已经声明过,只是一个引用,cnst表示该变量是一个常量,不可修改。
extern NSString * const kURL;
NSString * const kURL = @"http://marshal.easymorse.com";
NSUserDefaults
NSUserDefaults类用于保存应用程序设置和属性以及用户数据。例如,你可以存储用户在应用程序中使用的图片或默认颜色方案。这些对象存储在iOS所谓的“defaults系统”中。iOS的defaults系统在整个app中都是可用的,因此存放到defaults系统中的数据也是整个应用程序生命周期中可用的。也就是说,无论用户关闭程序还是关机,在用户再次打开程序或开机后这些数据仍然存在。NSUserDefaults可以存储的数据类型包括:
NSData
NSString
NSNumber
NSDate
NSArray
NSDictionary
如果你想保存其他类型,如UIImage,你应该进行编码(即archive),或者将它转换为NSData、NSNumber或者NSString。
查看NSUserDefaults,说到底该对象就是一个dictionary的数据结构。
NSDictionary* defaults = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]; NSLog(@"Defaults: %@", defaults);
查看NSUserDefaults中某一项的值:
NSArray *array = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleKeyboards"]; NSLog(@"Keyboards: %@", array);
往NSUserDefaults中设置一个值:
[[NSUserDefaults standardUserDefaults] setObject:@"test-value2" forKey:@"test-key"];重复给一个Key赋值,后面的会覆盖前面的。
把缓存中的数据同步到后台,程序崩溃时,未同步到后台的数据会丢失。
[[NSUserDefaults standardUserDefaults] synchronize];
最后,NSUserDefaults是单例的,同时也是线程安全的。