单例各种写法

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;  
}
}  
 
原文地址:https://www.cnblogs.com/fgyqbs/p/4044121.html