IOS Singleton(单例)

  Singleton.h

// .h
#define singleton_interface(class) + (instancetype)shared##class;

// .m
#define singleton_implementation(class) 
static class *_instance; 

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

    return _instance; 
} 

+ (instancetype)shared##class 
{ 
    if (_instance == nil) { 
        _instance = [[class alloc] init]; 
    } 

    return _instance; 
}
原文地址:https://www.cnblogs.com/liuwj/p/7000559.html