单例模式Singleton-OC版

代码-.h文件:

#import <Foundation/Foundation.h>

@interface Instance : NSObject

+ (instancetype)sharedInstance;

@end

代码-.m文件:

#import "Instance.h"

@implementation Instance

static id _instance;

+ (instancetype)allocWithZone:(struct _NSZone *)zone {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _instance = [super allocWithZone:zone];
    });
    return _instance;
}

+ (instancetype)sharedInstance {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _instance = [[self alloc] init];
    });
    return _instance;
}

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

- (id)mutableCopyWithZone:(NSZone *)zone {
    return _instance;
}

@end
原文地址:https://www.cnblogs.com/xwoder/p/6021474.html