单例模式
来源:互联网 发布:北津学院教务网络系统 编辑:程序博客网 时间:2024/05/21 11:22
今天和大家分享一下ios中常用的单例模式。
首先解释一下什么叫做单例,顾名思义,单例就是在程序中只有这么一个实例对象,专业点就是说对象只初始化一次。
单例模式主要有两种:
第一种,
+ (id)sharedInstance{ static ViewController *instance = nil; @synchronized(self) { if (!instance) { instance = [[ViewController alloc] init]; } } return instance;}使用这个方法创建单例主要注意一下,@synchronized()关键字,其作用是多线程保护。也就是说在多线程的情况下,如果同时调用这个单例方法并且这个实例是第一次初始化,那么就会导致创建出两个实例,而加上@synchronized()关键字恰好可以避免这种情况。
第二种,
+ (id)sharedInstance{ static ViewController *instance = nil; static dispatch_once_t once; dispatch_once(&once,^{ instance = [[ViewController alloc]init]; }); return instance;}
使用这种方式创建单例,是在GCD机制出现之后。void dispatch_once(dispatch_once_t*predicate,dispatch_block_tblock);
解释:Executes a block object once and only once for the lifetime of an application.意思是说在应用程序的整个生命周期期间,代码块里面的代码只执行一次。
0 0
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- 类初始化时定义一个不可改变的Map集合
- Android开发之旅:书籍、教程、工具和各种干货!
- ObjectARX编程环境
- ubuntu环境安装交叉编译工具
- java多线程12种设计模式
- 单例模式
- 成员变量与局部变量
- web 客服系统
- 个人blog转阵地了
- java改变默认图标
- Java中使用xpath注意事项
- java基于线程的分布式
- java jvm 垃圾收集算法
- poj 2109 Power of Cryptography