单例各种写法

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;  

}

}  

 

 

你可能感兴趣的:(单例)