OC高效率52之使用dispatch_once來執行只需運行一次的線程安全代碼

#import "EOCClassShareInstance.h"

@implementation EOCClassShareInstance
/**
 *  通常建立單例方式
 */
+(id)shareInstance{
    static EOCClassShareInstance *shared = nil;
    @synchronized(self) {
        if (!shared){
            shared = [[EOCClassShareInstance alloc]init];
        }
    }
    return shared;
}
/**
 *  GCD線程安全模式
 */
+(id)sharedGCDInstance{
    static EOCClassShareInstance *sharedGCD = nil;
    static dispatch_once_t onceToken;//每次調用都必須使用相同的標記,因此要申明爲static
    dispatch_once(&onceToken, ^{
        sharedGCD = [[self alloc]init];
    });
    return sharedGCD;
}

@end
相關文章
相關標籤/搜索