OC中线程安全的单例

@implementation MySingleton

+ (instancetype)sharedInstance
{
    static MySingleton* instance = nil;
    static dispatch_once_t  onceToken;
    dispatch_once(&onceToken, ^{
        instance = [[MySingleton alloc]initPrivate];
    });
    return instance;
}

-(id)init
{
    @throw [NSException exceptionWithName:@"Singleton init" reason:@"use [MySingleton sharedInstance]" userInfo:nil];
}

- (instancetype)initPrivate
{
    self = [super init];
    if (self) {
        //do your init
    }
    return self;
}

@end
原文地址:https://www.cnblogs.com/guoxiaoqian/p/4494945.html