IOS开发之_快速单例

/** .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; \
} \


你可能感兴趣的:(IOS开发之_快速单例)