NSUserDefaults的一些使用心得

· NSUserDefaults

平时开发中使用 NSUserDefaults 来进行一些简单配置数据的保存是很方便的。大家也都知道 NSUserDefaults`其实是对一个plist文件的读写,那么问题来了,如果一个很大很复杂的应用,使用了各种SDK,且各个业务模块独立开发,大家都要用NSUserDefaults来保存一些设置,除了各自需要保证自己设置key的唯一性外,plist文件越来越大所带来的读写效率问题也不同忽视。

· initWithSuiteName

原本想自己写一个NSUserDefaults类似的工具来保存的配置信息到单独的plist文件,发现NSUserDefaults 有一个初始化方法:

/// -initWithSuiteName: initializes an instance of NSUserDefaults that searches the shared preferences search list for the domain 'suitename'. For example, using the identifier of an application group will cause the receiver to search the preferences for that group. Passing the current application's bundle identifier, NSGlobalDomain, or the corresponding CFPreferences constants is an error. Passing nil will search the default search list.
- (nullable instancetype)initWithSuiteName:(nullable NSString *)suitename NS_AVAILABLE(10_9, 7_0) NS_DESIGNATED_INITIALIZER;

使用此方法初始化NSUserDefaults会以suitename为文件名创建独立的plist文件(默认是以应用的bundle id为文件名的)。这样就可以创建单独的plist文件进行读写了。

-initWithSuiteName原本是在APP Group中用来进行应用间数据共享的,suitenameCapabilities 中设置的 App Groups 的id匹配的情况下,该plist文件会被创建到设备的共享目录 AppGroup 中,否则则会创建到应用沙盒 Library > Preferences 目录下。

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,915评论 18 139
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,210评论 30 471
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 7,874评论 0 27
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,145评论 6 13
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,951评论 6 342