单例

  1. 低逼格的一种方式,采用判断形式

  2. static AccountManager *DefaultManager = nil;  

  3. + (AccountManager *)defaultManager {  

  4.     if (!DefaultManager) DefaultManager = [[self allocWithZone:NULL] init];  // 采用判断方式确保该对象只被创建一次

  5.     return DefaultManager;  

  6. }  


// 高逼格一点的方式,采用线程的方式

  1. + (AccountManager *)sharedManager  

  2. {  

  3.         static AccountManager *sharedAccountManagerInstance = nil;  

  4.         static dispatch_once_t predicate;  // 该指针的作用就是用来判断block是否执行完毕

  5.         dispatch_once(&predicate, ^{  

  6.                 sharedAccountManagerInstance = [[self alloc] init];   // 该block只会在整个程序运行期间运行一次

  7.         });  

  8.     return sharedAccountManagerInstance;  

  9. }  


你可能感兴趣的:(单例,笔记,oc)