首页 > 编程开发 > IOS    日期:2020-05-26 / 来自互联网 / 浏览

如下所示:

//下面这段宏考过去直接用
#define SYNTHESIZE_SINGLETON_FOR_HEADER(className) \

\

+ (className *)sharedInstance;\

+ (void)destroyInstance;
//在单例生成之前onceToken = 0,在单例生成之后onceToken = -1了,之后一直保持-1这个值,知道这个之后我想你应该有思路了
#define SYNTHESIZE_SINGLETON_FOR_CLASS(className) \

\

static className *shared##className = nil; \

static dispatch_once_t onceToken;\

+ (className *)sharedInstance\

{\

 return [[self alloc] init];\

}\

+ (className *)allocWithZone:(struct _NSZone *)zone\

{\

 dispatch_once(&onceToken, ^{\

  shared##className = [super allocWithZone:zone];\

 });\

 return shared##className;\

}\

- (className *)copyWithZone:(NSZone *)zone\

{\

 return shared##className;\

}\

- (className *)mutableCopyWithZone:(NSZone *)zone\

{\

 return shared##className;\

}\

+ (void)destroyInstance {\

 shared##className = nil;\

 onceToken = 0;\

}\
//用法,注意要遵循NSCopying,NSMutableCopying 协议
import <Foundation/Foundation.h>
@interface YNHTUserModel : NSObject<NSCopying,NSMutableCopying>
SYNTHESIZE_SINGLETON_FOR_HEADER(YNHTUserModel);
@property (nonatomic,copy) NSString* inviter_id;//邀请人ID
@property (nonatomic,copy) NSString* token;
@property (nonatomic,copy) NSString* nick_name;
@end
#import "YNHTUserModel.h"
@implementation YNHTUserModel
SYNTHESIZE_SINGLETON_FOR_CLASS(YNHTUserModel);

@end

以上这篇ios 单利的完整使用实例 及销毁 宏定义就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

觉得上面的内容有用吗?快来点个赞吧!

点赞() 我要打赏

温馨提示 : 本站内容来自会员投稿以及互联网,所有源码及教程均为作者总结编辑,请大家在使用过程中提前做好备份,以免发生无法预知的错误,源码类教程请勿直接用于生产环境!

 可能感兴趣的文章