单例初探(使用单例存储app全局公用数据)
2015-07-03 11:50
253 查看
接触ios后,一直在想用什么方式保存整个app使用的全局变量那。经过思考查找,知道了应该使用单例模式。
单例模式的特点就是“单”,整个系统种只能存在一个实例。本文将使用GCD,创建多线程安全的单例类,用于存放系统的参数。
第一步:任何一个类使用的时候最常用的申方式就是,alloc init。而alloc 方法 最后一定会进入 +(instancetype)allocWithZone:(struct _NSZone *)zone 方法,所以只要重写这个方法就可以达到单例的效果。gcd提供里一种多线程安全的单词调用方法。具体代码如下:
第二步:提供一个实例访问方法。当然是一个类方法,方法内只要返回此实例即可,代码如下:
单例模式的特点就是“单”,整个系统种只能存在一个实例。本文将使用GCD,创建多线程安全的单例类,用于存放系统的参数。
第一步:任何一个类使用的时候最常用的申方式就是,alloc init。而alloc 方法 最后一定会进入 +(instancetype)allocWithZone:(struct _NSZone *)zone 方法,所以只要重写这个方法就可以达到单例的效果。gcd提供里一种多线程安全的单词调用方法。具体代码如下:
+(instancetype)allocWithZone:(struct _NSZone *)zone{ static GlobalVariables * instance; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ instance= [super allocWithZone:zone]; }); return instance; }做完这一步我们可以去看一下,是不是每次申请,或者在异步线程内每次申请都是一个实例。
第二步:提供一个实例访问方法。当然是一个类方法,方法内只要返回此实例即可,代码如下:
+(instancetype)shareGlobalVariables{ return [[self alloc]init]; }第三步: 给单例类加入属性存储数据
相关文章推荐
- android TextView设置删除线,超链接,颜色和字体等说介绍,androidtextview
- android实现背景音乐播放
- android如何长时间音乐播放实现MediaPlayer
- Android4.4KK下遮盖p-sensor拨打电话无法自动灭屏的问题分析
- Android4.3 蓝牙BLE初步
- JS判断设备以及区别不同浏览器(微信、手机等)
- Cocos2d-x-3.6学习(二)----全平台配置
- iOS 9 适配系列教程
- iOS开发系列--通知与消息机制
- unity中IOS和Android真机Profiler
- Mapper过程中Combiner的作用
- Swift 闭包(六)
- 【Effective Objective-C 2.0读书笔记】第四章:协议和分类
- Android四大基本组件介绍与生命周期
- Swift “ambiguous use of operator '>'”
- iOS开发小技巧之--WeakSelf宏的进化
- Android DiskLruCache完全解析,硬盘缓存的最佳方案
- android隐藏中间四位手机号
- Android 中的一些Manager
- android sdk离线安装