单例 - 宏


// .h文件
#define WhSingletonH(name) + (instancetype)shared##name;

// .m文件
#define WhSingletonM(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; \
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 单例模式 单例的目的:希望对象只创建一个单例,并且提供一个全局的访问点 单例模式(arc) +(instancet...
    三岁就很乖阅读 588评论 0 0
  • 单例模式 单例模式(arc) 类的实现 调用单例 单例模式(mrc) 除了上边的方法我们在mrc的时候还需要增加一...
    董军1990阅读 3,515评论 11 35
  • 本文首先实现单例模式,然后对单例代码进行抽取宏,使其他类可以一句代码实现单例(只介绍ARC环境)本文代码[http...
    王技术阅读 1,188评论 2 16
  • 从文章的概述,我们能够了解到表情包的发展史,已经有几十年了,任何一个物质的存在都有其合理性,尤其是经过时间筛选存在...
    丿子木丨阅读 477评论 0 0
  • 大部分的Linux开源代码都是存放在国外的服务器上的,在国内下载源代码或发行版ISO映像时的速度极大的降低了大家兴...
    Albert陈凯阅读 2,395评论 0 0

友情链接更多精彩内容