IOS NSUserDefaults 小技巧

发布时间:2016-12-8 17:50:44 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"IOS NSUserDefaults 小技巧",主要涉及到IOS NSUserDefaults 小技巧方面的内容,对于IOS NSUserDefaults 小技巧感兴趣的同学可以参考一下。

转载自:http://zasoft.blog.163.com/blog/static/2052151762013020111351917/ 在使用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,这样毕竟影响性能和效率,相信IOS系统的工程师,他们这么做也是有道理的,嘿嘿。

上一篇:(10) - 枚举 (图)
下一篇:PostgreSQL 游标处理

相关文章

相关评论