|
|
|
|
|
// |
|
|
// PPSingleton.h |
|
|
// PPGetAddressBook |
|
|
// |
|
|
// Created by AndyPang on 16/9/19. |
|
|
// Copyright © 2016年 AndyPang. All rights reserved. |
|
|
// |
|
|
|
|
|
/* |
|
|
********************************************************************************* |
|
|
* |
|
|
*⭐️⭐️⭐️ 新建 PP-iOS学习交流群: 323408051 欢迎加入!!! ⭐️⭐️⭐️ |
|
|
* |
|
|
* 如果您在使用 PPGetAddressBook 的过程中出现bug或有更好的建议,还请及时以下列方式联系我,我会及 |
|
|
* 时修复bug,解决问题. |
|
|
* |
|
|
* Weibo : jkpang-庞 |
|
|
* Email : jkpang@outlook.com |
|
|
* QQ 群 : 323408051 |
|
|
* GitHub: https://github.com/jkpang |
|
|
* |
|
|
* PS:我的另外两个很好用的封装,欢迎使用! |
|
|
* 1.对AFNetworking 3.x 与YYCache的二次封装,一句代码搞定数据请求与缓存,告别FMDB: |
|
|
* GitHub:https://github.com/jkpang/PPNetworkHelper |
|
|
* 2.仿京东淘宝商品数量的加减按钮,可定制程度高,使用简单: |
|
|
* GitHub:https://github.com/jkpang/PPNumberButton |
|
|
* |
|
|
* 如果 PPGetAddressBook 好用,希望您能Star支持,你的 ⭐️ 是我持续更新的动力! |
|
|
********************************************************************************* |
|
|
*/ |
|
|
|
|
|
#ifndef PPSingleton_h |
|
|
#define PPSingleton_h |
|
|
|
|
|
// .h文件 |
|
|
#define PPSingletonH(name) + (instancetype)shared##name; |
|
|
|
|
|
// .m文件 |
|
|
#define PPSingletonM(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; \ |
|
|
} |
|
|
|
|
|
#endif /* PPSingleton_h */
|
|
|
|