您的位置:首页 > 其它

单例的两种实现方式

2016-02-18 20:51 169 查看
    在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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  单例 GCD 同步锁