单例的两种实现方式

    在iOS开发中,很多地方会用到单例模式。单例可以保证在程序的运行过程中,一个类只有一个实例,而且该实例易于外界访问,从而方便的控制实例个数,并且节约系统资源。
    单例在整个应用程序中,共享一份资源,且这份资源只需要创建一次即可。单例的实现方式有两种。
    第一种,同步锁实现单例。

+(instancetype)sharedPerson{

    static LYQPerson *instance;

    

    @synchronized(self) {

        if(!instance){

            instance = [LYQPerson new];

        }

    }

   

    return instance;

}


    第二种,GCD实现单例。


         GCD实现单例首先判断静态区的onceToken,当为0的时候执行block,0不执行。因此GCD实现的单例效率高,且线程安全。


+(instancetype)sharedPerson{


    static dispatch_once_t onceToken;

    

    dispatch_once(&onceToken, ^{

        

        instance = [LYQPerson new];

        

    });

    return instance;

}


你可能感兴趣的:(单例的两种实现方式)