iOS中的单例模式

    单例模式是一种常用的软件设计模式,具有单例模式的类:在整个应用程序中,使用该类,只能创建出唯一的一个实例对象,

    即在整个应用程序中,使用该类去多次创建其实例对象,这些实例对象的内存地址也都是同一个内存地址,因为它们都是同一个实例对象!

    通过使用单例模式,可以保证整个应用程序中,该单例模式的类有且只有一个实例对象,而且该实例对象能被外界访问,从而方便地控制该类的实例对象的个数,并节约系统资源。

    如果希望在整个应用程序中,通过某个类,创建出来的其实例对象只能存在唯一的一个,那么,单例模式就是最好的解决方案。

    iOS中最常见的单例模式的类就是UIApplication,UIWindow:

    UIApplication *application = [UIApplication sharedApplication];

单例模式的实现步骤:

    1> 重写+allocWithZone:类方法:+alloc方法的内部会自动调用+allocWithZone:方法,用来保证他人直接使用+alloc和-init试图获得一个新的实例对象时,不产生一个新的实例对象

    2> 建立+sharedXXX类方法,便于在其他类中访问该单例模式的类所创建出来的那个唯一的实例对象(XXX为单例模式类的类名):

具体代码:

在整个应用程序运行期间,GCD中的dispach_once()函数中的代码块,只会被执行一次,而且还是多线程安全的,既能提高效率,又能自动适配多核cpu问题。

单例模式

优点:

    可以阻止其他对象实例化单例对象的副本,从而确保所有对象都访问唯一实例;

缺点:

    单例对象一旦建立,对象指针是保存在静态区的,单例对象在堆中分配的内存空间,会在应用程序终止后才会被释放,即单例对象在什么时候都不要释放 因为其实就是全局变量。

提示:

    只有确实需要唯一使用的对象才需要考虑单例模式,不要滥用单例模式。

原文地址:https://www.cnblogs.com/hello-Huashan/p/4819808.html