美文网首页
iOS 单例的简单写法

iOS 单例的简单写法

作者: 孙明辉 | 来源:发表于2017-09-14 17:32 被阅读0次

    用法:

    将下方代码写进一个header文件中,然后哪个类需要写为单例模式的话,导入头文件,然后在该h文件中写EASingletonH(类名),在m文件中写EASingletonM(类名),至此,你已经可以在别的类中尝试。

    调用方式:

    举例:
    以User类为例
    [User sharedUser]
    可以这么使用,那么说明你的单例已经可以正常使用了

    // .h文件
    #define EASingletonH(name) + (instancetype)shared##name;
    
    // .m文件
    #define EASingletonM(name) \
    static id _instance; \
     \
    + (instancetype)allocWithZone:(struct _NSZone *)zone \
    { \
        static dispatch_once_t onceToken; \
        dispatch_once(&onceToken, ^{ \
            _instance = [super allocWithZone:zone]; \
        }); \
        return _instance; \
    } \
     \
    + (instancetype)shared##name \
    { \
        static dispatch_once_t onceToken; \
        dispatch_once(&onceToken, ^{ \
            _instance = [[self alloc] init]; \
        }); \
        return _instance; \
    } \
     \
    - (id)copyWithZone:(NSZone *)zone \
    { \
        return _instance; \
    }
    

    相关文章

      网友评论

          本文标题:iOS 单例的简单写法

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