IOS单例模式
1 普通单例
static HAObjectStudy *defaultStudy = nil;
+(HAObjectStudy *)getInstance
{
@synchronized(self){
if(defaultStudy == nil){
defaultStudy = [HAObjectStudy new];
NSLog(@"defaultStudy 被getInstance创建");
}
return defaultStudy;
}
}
通用方式,自己控制线程安全
2 initialize单例
static HAObjectStudy *defaultStudy = nil;
+ (void)initialize
{
[super initialize];
NSLog(@"initialize --- 初始化,类在创建的时候进行初始化要进行的操作");
if (defaultStudy == nil) {
defaultStudy = [HAObjectStudy new];
NSLog(@"defaultStudy 被initialize创建");
}
}
+(HAObjectStudy *)getInitializeInstance
{
return defaultStudy;
}
借助Object-c的类初始化机制,不用控制线程安全
说明:程序的类包括加载,连接,初始化过程,当类第一次使用的时候运行唯一一次initialize初始化,所以可取巧用来支持单例模式。