个人对单例模式的一个理解:单例在整个工程中,就相当于一个全局变量,就是不论在哪里需要用到这个类的实例变量,都可以通过单例方法来取得,而且一旦你创建了一个单例类,不论你在多少个界面中初始化调用了这个单例方法取得对象,它们所有的对象都是指向的同一块内存存储空间(即单例类保证了该类的实力对象是唯一存在的一个)。
“单例模式”是我们在iOS中最常使用的设计模式之一。单例模式不需要传递任何参数,就有效地解决了不同代码间的数据共享问题。单例类是一个非常重要的概念,因为它们表现出了一种十分有用的设计模式。单例类的应用贯穿于整个iOS的SDK中。例如, UIApplication 类有一个方法叫 sharedApplication,从任何地方调用这个方法,都将返回与当前正在运行的应用程序相关联的 UIApplication 实例。
苹果自身对单例的实现:
- 不能外界调用 alloc,一调用就崩掉,其实就是抛异常(第一次调用 alloc 不崩溃,其他都崩溃);
- 提供一个方法给外界获取单例;
- 内部创建一次单例,创建时间:程序启动的时候创建单例。
下面举例分析:
如果直接调用 alloc,则会抛出异常(重写了 alloc 的缘故),此时应该调用类方法 sharePerson。
调用类方法 sharePerson 时显示正常:
单例模式的优点:
- 提供了对唯一实例的受控访问;
- 由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能;
- 允许可变数目的实例。
上述是模仿苹果写的单例模式,还有其他方式去创建单例,在以后的博客中会逐步讲到。