单例的创建方法

来源:互联网 发布:淘宝客入门视频教程 编辑:程序博客网 时间:2024/06/06 06:56
单例 
1.好处:保证数据的同步,全局都可以调用
2.创建
第一种穿件的方法 (简单版)(当多个线程同时调用这个方法时,有可能manger 会被多次创建)
manger *manger = nil;
+(manger*)shardeManger{

if(!manger){
manger = 【self class】alloc】init】;

}
retrn manger;
}

第二种创建的方法 (gcd版本)
manger *manger = nil;

+ (manger*)shardeManger{

 dispatch_once_t oneceToken;

    dispatch_once(&oneceToken, ^{

        if(!manger){

manger =[[ [srlf class]alloc]init];

}

    }) ;

return manger;

}


第三种 (线程锁版本)【线程锁 需要排队 ,当一个线程 结束后,另一个线程 才能进入】
manger *manger = nil;

+(manger*)shardenManger{

@synchronized(self) {

if(!manger){

manger = 【【【self class】alloc】init】;

  }

return manger;

}
0 0
原创粉丝点击