美文网首页
单例宏的使用

单例宏的使用

作者: Flynn_Lee | 来源:发表于2019-12-25 13:18 被阅读0次

1、单例宏代码块如下:

#define singleH(name) +(instancetype)share##name;

#if __has_feature(objc_arc)
#define singleM(name) static id _instace;\
\
+(instancetype)allocWithZone:(struct _NSZone *)zone\
{\
    static dispatch_once_t onceToken;\
    dispatch_once(&onceToken, ^{\
        _instace = [super allocWithZone:zone];\
    });\
    return _instace;\
}\
\
+(instancetype)share##name\
{\
return [[flynn##name alloc]init];\
}\
\
-(id)copyWithZone:(NSZone *)zone\
{\
    return _instace;\
}\
\
-(id)mutableCopyWithZone:(NSZone *)zone\
{\
    return _instace;\
}

#else
#define singleM(name) static id _instace;\
\
+(instancetype)allocWithZone:(struct _NSZone *)zone\
{\
    static dispatch_once_t onceToken;\
    dispatch_once(&onceToken, ^{\
        _instace = [super allocWithZone:zone];\
    });\
    return _instace;\
}\
\
+(instancetype)share##name\
{\
return [[flynn##name alloc]init];\
}\
\
-(id)copyWithZone:(NSZone *)zone\
{\
    return _instace;\
}\
\
-(id)mutableCopyWithZone:(NSZone *)zone\
{\
    return _instace;\
}\
-(oneway void)release\
{\
}\
-(instancetype)retain\
{\
    return _instace;\
}\
-(NSUInteger)retainCount\
{\
    return MAXFLOAT;\
}
#endif

2、使用方法
第一步将代码块拷到你的pch文件中
第二步将代码中所有的flynn替换成你的类前缀。
第三步在需要使用单例的类中使用(
A、在.h文件中使用singleH(类名去除前缀部分)如:FLYNNtest,single(test)。
B、在.m文件中使用singleH(类名去除前缀部分)
第四步使用直接用类名调用share方法

相关文章

  • iOS 单例

    单例模式实现不能使用继承 定义单例实现 简写 定义单例实现宏

  • 单例

    单例 单例宏

  • 单例宏的使用

    1、单例宏代码块如下: 2、使用方法第一步将代码块拷到你的pch文件中第二步将代码中所有的flynn替换成你的类前...

  • 0922 宏定义通杀单例

    1、单例宏定义源码 说明此宏定义精华就是把声明文件和执行文件都放在宏定义了,而且针对不同的类,生成不同的单例,使用...

  • 单例模式和GCD单例实现

    1、传统单例模式2、GCD单例模式3、用宏实现GCD单例模式4、用宏实现GCD单例模式,名称随类名变化而变化 单例...

  • 使用宏写单例

    本文只介绍ARC情况下的单利 过去一直背不下来单利如何写,就是知道这么回事,也知道通过宏来写单利,但是一直记不住,...

  • 使用宏封装单例

    一、单例使用 使用方法 .h 2.使用方法.m 二、单例实现和定义 三、单例调用 摘录自原文:https://bl...

  • iOS 单例

    Objective-C 单例宏 Swift 单例声明

  • iOS常用宏

    单例宏

  • iOS单例宏的使用

    关于iOS单例,iOS单例详解请看这篇文章http://www.jianshu.com/p/ba30a063fce...

网友评论

      本文标题:单例宏的使用

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