您的位置:首页 > 移动开发 > IOS开发

iOS单例

2016-02-14 15:56 323 查看
2016年02月14日15:41:15

刚接触单例,理解不是很深刻,先把常用的宏定义存到这块,以便后用。

我学习的李明杰老师的视频是创建一个头文件,在这个头文件里面将格式化的代码定义成宏,这样方便将用到的时候直接用宏来实现单例。

- 宏如下

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

// .m文件
#define XMGSingletonM(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; \
}


示例演示。

讲一个person的类变成单例模式。

//person.h 文件
#import <Foundation/Foundation.h>
#import "singleton.h"//包含宏的头文件

@interface person : NSObject
XMGSingletonH(person)
@end


//person.m
#import "person.h"

@interface person()

@end

@implementation person
XMGSingletonM(person)
@end
//这样就完成了person这个类的单例化。


发现一篇比较好的文章,留以备后用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios 单例