1、什么是单例?
单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例,在需要全局资源共享的对象时,经常会用到这种设计模式。
2、单例的作用
顾名思义,单例,即是在整个项目中,这个类的对象只能被初始化一次。它的这种特性,可以广泛应用于某些需要全局共享的资源中,比如管理类,引擎类,也可以通过单例来实现传值。UIApplication、NSUserDefaults等都是IOS中的系统单例。
3、单例的写法
单例的写法常用的有两种方式:
方式1、不考虑线程安全
方式2、考虑线程安全 (一般用用得最多的也就是这种)
通过上面的方法,我们已经可以使用类方法来得到这个单例,但是很多时候,项目的工程量很大,还有可能会很多开发者同时参与一个项目的开发,有的也会用到这个单例,例如上面二种方法,在 alloc 或者new 的方式创建时就会重新在内存中开辟内存空间了,如下图:
4、代码的优化
因为通过alloc或者copy还是new,都是通过调用allocWithzone和copyWithzone来分配空间的,所以我们重写allocWithZone 方法:
我们再次打印下内存地址看看是否相同:
通过上面的优化后不管是new 还是alloc 创建出来的都是全局唯一的对象啦 !






网友评论