如下所示:
//下面這段宏考過去直接用#define SYNTHESIZE_SINGLETON_FOR_HEADER(className) //+ (className *)sharedInstance;/+ (void)destroyInstance;//在單例生成之前onceToken = 0,在單例生成之后onceToken = -1了,之后一直保持-1這個(gè)值,知道這個(gè)之后我想你應(yīng)該有思路了#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 協(xié)議import <Foundation/Foundation.h>@interface YNHTUserModel : NSObject<NSCopying,NSMutableCopying>SYNTHESIZE_SINGLETON_FOR_HEADER(YNHTUserModel);@property (nonatomic,copy) NSString* inviter_id;//邀請(qǐng)人ID@property (nonatomic,copy) NSString* token;@property (nonatomic,copy) NSString* nick_name;@end
#import "YNHTUserModel.h"@implementation YNHTUserModelSYNTHESIZE_SINGLETON_FOR_CLASS(YNHTUserModel);@end
以上這篇ios 單利的完整使用實(shí)例 及銷毀 宏定義就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選