美文网首页
iOS官方推荐的单例写法

iOS官方推荐的单例写法

作者: VincentHK | 来源:发表于2017-03-26 14:35 被阅读0次

    #define HMSingleton_h(name)  + (instancetype)shared##name;

    #if __has_feature(objc_arc) // 是arc环境

    #define HMSingleton_m(name)  + (instancetype)shared##name {\

    return [[self alloc] init];\

    }\

    \

    + (instancetype)allocWithZone:(struct _NSZone *)zone {\

    static dispatch_once_t onceToken;\

    static id instance = nil;\

    dispatch_once(&onceToken, ^{ \

    instance = [super allocWithZone:zone];\

    });\

    return instance;\

    }\

    \

    - (id)copyWithZone:(nullable NSZone *)zone {\

    return self;\

    }

    #else // MRC环境

    #define HMSingleton_m(name)  + (instancetype)shared##name {\

    return [[self alloc] init];\

    }\

    \

    + (instancetype)allocWithZone:(struct _NSZone *)zone {\

    static dispatch_once_t onceToken;\

    static id instance = nil;\

    dispatch_once(&onceToken, ^{ \

    instance = [super allocWithZone:zone];\

    });\

    return instance;\

    }\

    \

    - (id)copyWithZone:(nullable NSZone *)zone {\

    return self;\

    }\

    - (oneway void)release {\

    \

    }\

    \

    - (instancetype)autorelease {\

    return self;\

    }\

    \

    - (instancetype)retain {\

    return self;\

    }\

    \

    - (NSUInteger)retainCount {\

    return 1;\

    }

    #endif

    相关文章

      网友评论

          本文标题:iOS官方推荐的单例写法

          本文链接:https://www.haomeiwen.com/subject/tnkkottx.html