oc单例

来源:互联网 发布:职场新人 知乎 编辑:程序博客网 时间:2024/05/18 00:28

ok,腾讯面试:oc单例模式 

static  DataManager * sharedDataManager =  nil;

+  (DataManager * ) sharedManager
{
    @synchronized(self)
 {
        
if  (sharedDataManager  ==  nil)
  {
            [[self alloc] init];
        }
    }
 
    
return  sharedDataManager;
}

+  (id)allocWithZone:(NSZone * )zone
{
    @synchronized(self)
 {
        
if (sharedDataManager  ==  nil)
  {
            sharedDataManager 
=  [super allocWithZone:zone];
            
return  sharedDataManager;
        }
    }
 
    
return  nil;
}