iOS 中单例的使用以及原理
来源:互联网 发布:淘宝导航条自定义图片 编辑:程序博客网 时间:2024/05/20 20:57
我们在进行程序开发的过程中经常会用到单例,下面来简单的介绍一下。
/** * 获取当前类单例对象 */+ (MPConfig *)shared { static dispatch_once_t predicate = 0; static MPConfig *object = nil; dispatch_once(&predicate, ^{ object = [[self class] new]; }); return object;}
其中MPConfig 是我们想要实现单例的类
上面的写法是在 iOS4之后出现的写法,该写法有以下几个特点:
1. 线程安全。
2. 满足静态分析器的要求。
3. 兼容了ARC
该方法的作用就是执行且在整个程序的声明周期中,仅执行一次某一个block对象。简直就是为单例而生的嘛。而且,有些我们需要在程序开头初始化的动作,如果为了保证其,仅执行一次,也可以放到这个dispatch_once来执行。
然后我们看到它需要一个断言来确定这个代码块是否执行,这个断言的指针一定要保存起来。
对于在应用中创建一个初始化一个全局的数据对象(单例模式),这个函数很有用。
如果同时在多线程中调用它,这个函数将等待同步等待,直至该block调用结束。
这个断言的指针必须要全局化的保存,或者放在静态区内。使用存放在自动分配区域或者动态区域的断言,dispatch_once执行的结果是不可预知的。
总结:1.这个方法可以在创建单例或者某些初始化动作时使用,以保证其唯一性。2.该方法是线程安全的,所以请放心大胆的在子线程中使用。(前提是你的dispatch_once_t *predicate对象必须是全局或者静态对象。这一点很重要,如果不能保证这一点,也就不能保证该方法只会被执行一次。)
0 0
- iOS 中单例的使用以及原理
- iOS SDWebImage的原理以及使用流程
- iOS - SDWebImage的原理以及使用流程
- iOS SDWebImage的原理以及使用流程
- iOS对于copy的原理以及常见的使用场景
- iOS框架研究之SDWebImage的原理以及使用流程
- IOS框架研究之SDWebImage的原理以及使用流程
- IOS框架研究之SDWebImage的原理以及使用流程
- EventBus的使用以及原理
- HandlerThread的使用以及原理
- 【无限互联】IOS框架研究之SDWebImage的原理以及使用流程
- Sharp红外传感器的原理以及使用技巧
- Android SoundPool 的使用以及原理分析
- SDWebImage的原理以及使用流程
- java 线程池的原理以及使用
- Android Matrix 的使用以及原理
- glide的基本使用以及原理
- glide的基本使用以及原理
- python微教程---第一季(第二集)----基础知识(让python运行起来)
- linux之LVM操作案例
- 三种简单的html网页自动跳转方法
- 电脑无法使用vmware10安装centos7的解决
- 禁止页面Body在后台滚动
- iOS 中单例的使用以及原理
- 优秀程序员的十个习惯
- 更改Windows命令行字体
- solr4.7新建core
- 利用DrawerLayout和触摸事件分发来实现抽屉侧滑业务
- Android 内部存储和Cache简单介绍
- 自定义基类BaseActivity,节省开发步骤
- LeetCode-334.Increasing Triplet Subsequence
- Charged view 0x7f9fb9568c80 was still registered to a window when it was deallocated.