NSUserDefaults小记
来源:互联网 发布:ipft网络打印机 编辑:程序博客网 时间:2024/05/19 11:38
在使用NSUserDefault的时候,很多人以为
[[NSUserDefaults standardUserDefaults] setObject:array forKey:@"testInfo"] ;
后就已经算存储好了,再通过
[[NSUserDefaults standardUserDefaults] objectForKey:@"testInfo"];
就可以取出刚刚存的数据。其实正常情况下没有问题,但是当重起程序,关键字testInfo对应的竟然是空,这是什么情况呢??
我看看NSUserDefaults的头文件,就会发现,其实还有另外一个方法:synchronize,数据即时写入。
如果我们在set后,执行下面的语句:
[[NSUserDefaults standardUserDefaults] synchronize];
那么就不会出现上面的取出数据为空的情况了。
完整代码如下:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];[defaults setObject:@"111" forKey:@"test"];[defaults synchronize];NSString *testStr = [defaults objectForKey:@"test"];NSLog(@"testStr is: %@",testStr);注意:
通过官方文档可以了解到,UserDefaults是根据时间戳定时的把缓存中的数据写入本地磁盘,而非即时写入。所以调用set方法之后数据有可能还没有写入磁盘,应用程序就已经终止了。保险期间,我们在对重要的数据保存时使用synchornize方法强制写入。
但是也要注意,不要频繁的使用synchornize,这样毕竟影响性能和效率。
0 0
- NSUserDefaults小记
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- NSUserDefaults
- Android init.rc文件浅析
- 如何发布gp服务
- ios 开发常用代码 (备忘)
- vl02n 批次拆分
- KVM虚拟机差量生产镜像测试
- NSUserDefaults小记
- 多文档问题
- log4cpp:简单输出日志示例
- sql 获取字符串长度SQL字符串操作汇总
- Instagram推新私信功能Direct:支持照片、视频和文本信息
- ##IE兼容##条件注释判断浏览器类型
- QT编译出错in Q_INTERFACES. qobject_cast to QGraphicsItem will not work!
- 二见钟情之ComboBox显示查询结果集
- sql 字符串操作