iOS 最稳的单例写法

355 阅读1分钟
@interface ShareObject : NSObject <NSCopying>

@end
@implementation ShareObject
+ (instancetype) shareInstance {
    static ShareObject *share = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        share = [[super allocWithZone:NULL] init];
    });
    return share;
}

+ (instancetype)allocWithZone:(struct _NSZone *)zone {
    return [self shareInstance];
}

- (id)copyWithZone:(NSZone *)zone {
    return self;
}