首页 » IOS » ios 单利的完整使用 及销毁 宏定义

ios 单利的完整使用 及销毁 宏定义

原文 http://blog.csdn.net/qq_20035785/article/details/78958989

2018-01-04 02:01:21阅读(502)


//下面这段宏考过去直接用

#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


最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹