欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

iOS 单例的简单写法

程序员文章站 2022-07-13 23:45:58
...

用法:

将下方代码写进一个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; \
}