单例各种写法

1.  + (id)sharedInstance
{
    static dispatch_once_t once = 0; //被访问次数 当访问一次的时候 下次就不在访问了
    __strong static id _sharedObject = nil;
    dispatch_once(&once, ^{
        _sharedObject = [[self alloc] init];
    });
    return _sharedObject;
}

 

2.

 static AccountManager *DefaultManager = nil;  
   
+ (AccountManager *)defaultManager {  
@synchorzied(self){
//线程安全  但是访问次数多的话   会 效率低下
    if (!DefaultManager) DefaultManager = [[self allocWithZone:NULL] init];  
    return DefaultManager;  
}
}  

 

 
posted @ 2014-10-22 19:33  ifgyong  阅读(242)  评论(0编辑  收藏  举报