单例模式的宏

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

// .m文件
#define JXHSingletonM(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; \
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • // Single.pch// 多线程// Created by WYC on 17/5/4.// Cop...
    e40c669177be阅读 2,481评论 0 0
  • 单例模式 单例模式(arc) 类的实现 调用单例 单例模式(mrc) 除了上边的方法我们在mrc的时候还需要增加一...
    董军1990阅读 8,749评论 11 35
  • 单例模式 单例的目的:希望对象只创建一个单例,并且提供一个全局的访问点 单例模式(arc) +(instancet...
    三岁就很乖阅读 3,477评论 0 0
  • 今天临摹了个小女孩,画头发练习线条,可是画得一点也不顺畅,得多练
    朱丽jileea阅读 1,794评论 0 2
  • 今天是到我和老郭现场办公室去值班,正好手里的其他事情都已经处理差不多。一早刚去办公室,业主工程师就过来找,昨天傍晚...
    绪红阅读 825评论 0 0