天天看點

IOS之單例模式IOS單例模式

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