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初始化,是以可取巧用來支援單例模式。