IOS中的单例设计模式
来源:互联网 发布:淘宝店铺新手装修步骤 编辑:程序博客网 时间:2024/05/22 10:39
单例设计模式是IOS开发中一种很重要很常用的一种设计模式。它的设计原理是无论请求多少次,始终返回一个实例,也就是一个类只有一个实例。下面是苹果官方文档中关于单例模式的图片:
如图所示,左边的图是默认的多例模式,只要发送请求去创建对象,就会得到一个新的对象;而右侧的图是单例模式,发送多个请求创建对象,但是最后返回的始终是同一个。
因为创建单例类的实例是在确保没有其他实例的情况下才创建的,并且在程序中使用的过程中始终是同一个实例,因此单例类可以作为提供一个全局访问资源的类,比如NSUserDefaults,我们可以通过它存储数据,它里面的数据就是全局的,无论在哪个类里面操作都是一样的。此外,一个单例类还可以防止调用者复制、保留或释放实例。因此,在开发的工程中可以根据需要来创建不同的单例类。
单例的创建分Non-ARC(非ARC)和ARC+GCD,后者现在用的比较广泛,它保证了线程的安全,满足了静态分析器的要求,还兼容了ARC,代码如下:
+(AccountManager *)sharedManager{ static AccountManager *sharedAccountManagerInstance = nil; static dispatch_once_t predicate; dispatch_once(&predicate, ^{ sharedAccountManagerInstance = [[self alloc] init]; }); return sharedAccountManagerInstance;}
代码分析:
通过这个类方法,可以得到当前类的单例对象。
在方法中先声明了一个实例,并初始化为nil,前面的static关键字可以保证只执行一次为nil的操作。dispatch_once_t是多线程中的,保证只执行一次。dispatch_once这个函数用于检查该代码块是否已经被调用过,通过它不仅可以保证块里面初始化的代码仅被运行一次,还能保证线程的安全。
单例的使用非常简单,可以通过上面的类方法来创建任何你想要的单例类,只需要把AccountManager修改为你想要创建类的名称,然后通过下面代码来创建实例即可:
AccountManager *manager = [AccountManager sharedManager];
0 0
- IOS中的单例设计模式
- IOS中的单例设计模式
- IOS中的常用设计模式 ----单例模式
- iOS开发中的设计模式----单例模式
- IOS设计模式--单例设计模式
- IOS单例设计模式
- iOS设计模式-单例
- iOS单例设计模式
- iOS 单例设计模式
- iOS 单例设计模式
- 设计模式中的单例设计模式
- iOS中的单例模式
- IOS中的单例模式
- IOS 中的单例模式
- iOS中的单例模式
- iOS中的单例模式
- iOS中的单例模式
- iOS中的单例模式
- Java读取文件夹下多个txt文本内容
- Android中的文件下载——DownLoadManager
- 【剑指offer】异或去重
- Deconv
- python socket例程
- IOS中的单例设计模式
- numpy中transpose和swapaxes函数讲解
- Apache整合Tomcat的相关问题
- linux基础3.9apache
- 重建二叉树
- F
- 利用eclipse打开github项目
- IPython 下的信息收集-魔力函数(page pinfo who等)- 千月的python linux 系统管理指南学习笔记(9)
- Hibernate三种实体映射,从建表到操作代码