1. 程式人生 > >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初始化,所以可取巧用來支援單例模式。