美文网首页
单例创建的两种方法

单例创建的两种方法

作者: 李二侠 | 来源:发表于2016-02-27 16:42 被阅读55次

    单例的创建

    //声明一个全局区的对象
    //创建一个静态区的对象,原因是,它在内存中一直存在,这样对外界来说,可以随时读取数据
    static DataHandle *dataHandle = nil;
    
    //创建单例(伪单例)/*不是完整单例 */
    +(instancetype)sharedDataHandle{
        
        if (nil == dataHandle) {
            //我们创建的单例使用 + 方法,原因是,在创建之前,无法存在一个实例对象去调用动态方法来创建它本身
            dataHandle = [DataHandle new];
        }
            
            return dataHandle;
      }
    
    static Elite *elite = nil;
    
    //两种创建单例的方法
    +(instancetype)sharedElite{
        //第一种写法
    //    @synchronized(self) {
    //        if (nil == elite) {
    //            
    //            elite = [[Elite alloc]init];
    //        }
    //        return elite;
    //    }
        //第二种写法
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken,^{
            elite = [[Elite alloc]init];
        });
        
    
        return elite;
        
    }
    

    相关文章

      网友评论

          本文标题:单例创建的两种方法

          本文链接:https://www.haomeiwen.com/subject/wwezhttx.html