IOS 单例 创建方式

时间:2022-12-23 13:04:15

@implementation Me

static Car *sharedInstance= nil;//声明一个静态对象引用并赋为nil

+(Me *) sharedInstance//声明类方法(+为类方法,也就是Java中的静态方法)

{

if(!sharedInstance)

{

sharedInstance = [[self alloc] init];

}

return sharedInstance;

}

@end

//覆盖allocWithZone:方法可以防止任何类创建第二个实例。使用synchronized()可以防止多个线程同时执行该段代码(线程锁)

+(id)allocWithZone:(NSZone *) zone

{

@synchronized(self)

{

if(sharedInstance == nil)

{

sharedInstance = [super allocWithZone:zone];

return sharedInstance;

}

}

return sharedInstance;

}

直接类名调用类方法就行了