数据共享之单例&NSUserDefaults
来源:互联网 发布:佚名是谁 知乎 编辑:程序博客网 时间:2024/05/22 04:27
1st,Nov,2015 JolieYang
问题: 用单例存储用户个人资料; 在第三方登陆的时候出现问题.
场景: 第一次第三方登陆时保存了用户的登陆类型(q/weixin/weibo).退出应用再进入后单例中的登陆类型变量就为空了.
结论: 目前仍未解决.
单例
单例的生命周期
优点:避免频繁创建销毁对象-> 提高性能;在内存中只有一个对象,节省内存空间;
缺点:会随着程序的挂起而消亡;
只支持NSString, NSNumber,NSDate, NSArray, NSDictionary;
延伸:
- 多线程使用单例使用共享资源时,线程安全问题。
- 单例应该只用来保存全局的状态,并且不能和任何作用域绑定。如果这些状态的作用域比一个完整的应用程序的生命周期要短,那么这个状态就不应该使用单例来管理。
在Cocoa Touch中,有:
NSUserDefault(可以方便读取应用设置数据,用来是持久化数据的);NSNotificationCenter(采用观察者模式提供信息广播通知的通知中心类)等单例类。
Cocoa框架中也有两个常见的类:
(1)NSFileManger(提供了访问文件系统的通用操作);
(2)NSBundle(提供了动态加载或者卸载的可执行代码,定位资源文件以及资源本地化,访问文件系统等功能)类。
懒汉式实例:调用实例方法才实例化对象
饿汉式实例:单例类被加载就实例化返回引用
NSUserDefaults
存储轻量级的本地数据
1. 存取数据
[[NSUserDefaults standardUserDefaults] setValue: someValue forKey: @"keyValue"];
1.1 存储BOOL值
[[NSUserDefaultsstandardUserDefaults]setBool:YESforKey:@"notFirstLaunch"];
2. 读数据
[[NSUserDefaults standardUserDefaults] valueForKey: @"keyValue"];
3. 数据置空
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"keyValue"];
// 同步
[[NSUserDefaults standardUserDefaults] synchronize];
参考资料:
iOS单例模式 or NSUserDefaults
IOS单例模式及单例模式的优缺点
设计模式深入学习IOS版(5)单例模式
避免滥用单例
0 0
- 数据共享之单例&NSUserDefaults
- NSUserDefaults单例简介
- NSUserDefaults单例
- 数据存储之NSUserDefaults
- swift基础之实现单例模式(仿NSUserDefaults)
- NSUserDefaults单例的使用
- 数据持久化之NSUserDefaults
- 数据持久化之NSUserDefaults
- 简单数据持久化/NSUserDefaults(单例) 登陆界面简单验证
- iOS单例模式 or NSUserDefaults
- iOS单例模式 or NSUserDefaults
- iOS 单例模式 + NSUserDefaults
- iOS单例模式and NSUserDefaults
- iPhone开发之使用NSUserDefaults存储数据
- 数据持久化(四)之NSUserDefaults
- iphone数据存储之--NSUserDefaults
- iOS数据存储之--NSUserDefaults
- iOS开发之数据持久—NSUserDefaults
- iOS 运行时
- Random
- HANA学院(07) - (04)在HANA Studio中使用ABC分类功能
- 安卓屏幕适配
- JS——构造函数的三种方法
- 数据共享之单例&NSUserDefaults
- Fragment介绍:
- TCP/IP 面试题整理
- ios 方法 HTML数据中去除 标签
- mysql group by 用法解析(详细)
- poj--3630--Phone List(字典树+前缀判断)
- 杭电2803The MAX
- JavaScript作用域问题:预解析、全局与局部作用域解析、作用域链
- iOS 自动计算 高度