美文网首页
直播项目 在 NSUserDefaults中踩坑

直播项目 在 NSUserDefaults中踩坑

作者: David_这样很好 | 来源:发表于2018-05-30 11:21 被阅读0次

    在写公司项目时,突然发现一个问题,那就是直播页面一直销毁不掉。这样就容易造成下次再进入直播时页面会卡死。
    在经过分析过后,发现是自己在使用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 对于小数据存储是真的方便,但是大的数据量的话,我建议还是使用数据库吧! 哈哈

    相关文章

      网友评论

          本文标题:直播项目 在 NSUserDefaults中踩坑

          本文链接:https://www.haomeiwen.com/subject/xidtsftx.html