直播项目 在 NSUserDefaults中踩坑

在写公司项目时,突然发现一个问题,那就是直播页面一直销毁不掉。这样就容易造成下次再进入直播时页面会卡死。
在经过分析过后,发现是自己在使用NSUserDefaults时出现了差错


问题代码

看这段代码,我们可以看到,我用NSUserDefaults 存储的是一个对象,当时自己为了省事,直接拿到数据然后进行存储,忘了NSUserDefaults 是不能存储对象的。


那现在我们就简单说说NSUserDefaults的使用吧。
NSUserDefaults用来存储类似用户的配置等一些比较小的数据,模拟器/真机保存在沙盒路径的Library——>Preferences文件夹中

一、创建NSUserDefaults对象

NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

二、创建NSUserDefaults对象之后即可往里面添加数据,它支持的数据类型有NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等系统定义的数据类型,如果要存放自定义的对象(如自定义的类对象),则必须将其转换成NSData存储(重点,笔者就在这犯错了)

三、往NSUserDefaults添加数据后,它们就变成了全局的变量,App中即可读写NSUserDefault中的数据:

其实NSUserDefaults的增删改查 其实是和NSDictionary的操作是一样的,这里就不再说了。

重点

NSUserDefaults是定时把缓存中的数据写入磁盘的,而不是即时写入,为了防止在写完NSUserDefaults后程序退出导致的数据丢失,可以在写入数据后使用synchronize强制立即将数据写入磁盘(代码如下)

[[NSUserDefaults standardUserDefaults] synchronize];

NSUserDefaults 对于小数据存储是真的方便,但是大的数据量的话,我建议还是使用数据库吧! 哈哈

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,174评论 1 32
  • 前言: 在程序开发中,数据层永远是程序的核心结构之一。对这些数据的加工处理是代码中能体现技术水平的一大模块,比如数...
    麦穗0615阅读 1,482评论 3 22
  • 27、ViewController的didReceiveMemoryWarning是在什么时候调用的?默认的操作是...
    烟雨平生花飞舞阅读 647评论 0 1
  • 缓存的四种方式?各自应用的场景? 缓存本质将请求到的数据存储到本地,将数据显示到UI界面前先询问本地数据库是否已经...
    Carden阅读 872评论 0 1
  • 关于首选项和设置 首选项是您持久存储的信息,并用于配置您的应用程序。应用程序通常会向用户公开偏好设置,以便他们自定...
    nicedayCoco阅读 1,071评论 0 0