美文网首页
iOS 单例宏

iOS 单例宏

作者: 万事皆允_iOS | 来源:发表于2020-01-14 11:25 被阅读0次

    #if __has_feature(objc_arc)

    #define SYNTHESIZE_SINGLETON_FOR_CLASS_HEADER(classname) \

    \

    + (classname *)shared##classname;

    #define SYNTHESIZE_SINGLETON_FOR_CLASS(classname) \

    \

    static classname *shared##classname = nil; \

    \

    + (classname *)shared##classname \

    { \

        static dispatch_once_t pred; \

        dispatch_once(&pred, ^{ shared##classname = [[classname alloc] init]; }); \

        return shared##classname; \

    }

    #else

    #define SYNTHESIZE_SINGLETON_FOR_CLASS_HEADER(classname) \

    \

    + (classname *)shared##classname;

    #define SYNTHESIZE_SINGLETON_FOR_CLASS(classname) \

    \

    static classname *shared##classname = nil; \

    \

    + (classname *)shared##classname \

    { \

        static dispatch_once_t pred; \

        dispatch_once(&pred, ^{ shared##classname = [[classname alloc] init]; }); \

        return shared##classname; \

    } \

    \

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

    { \

        return self; \

    } \

    \

    - (id)retain \

    { \

        return self; \

    } \

    \

    - (NSUInteger)retainCount \

    { \

        return NSUIntegerMax; \

    } \

    \

    - (oneway void)release \

    { \

    } \

    \

    - (id)autorelease \

    { \

        return self; \

    }

    #endif

    相关文章

      网友评论

          本文标题:iOS 单例宏

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