模式 單例 定義為巨集

2021-07-03 17:28:19 字數 2279 閱讀 2040

#import

@inte***ce wqperson : nsobject

/** 姓名*/

@property (nonatomic, strong) nsstring *name;

/** 年齡*/

@property (nonatomic, assign) nsinteger age;

+ (instancetype)shareperson;

@end

#import

"wqperson.h"

@inte***ce wqperson ()

@end

@implementation wqperson

// 定義靜態變數,在程式中只有乙份記憶體,作用域侷限在當前檔案

static wqperson *_person;

// 當使用[[wqperson alloc]init]建立物件的時候會自動呼叫此方法

+ (instancetype)allocwithzone:(struct _nszone *)zone

); return _person;

}// 提供快速建立方法

+(instancetype)shareperson

); return _person;

}// 當使用copy的時候呼叫此方法

- (id)copywithzone:(nszone *)zone

@end

// 使用

- (void)viewdidload

// 定義乙個singleton標頭檔案用來存放單例巨集

// .h檔案

#define wqsingletonh(name) + (instancetype)shared#

#name;

// .m檔案

#define wqsingletonm(name) \

static id _instance; \

\+ (instancetype)allocwithzone:(struct _nszone *)zone \

); \

return _instance; \}\

\+ (instancetype)shared#

#name \

); \

return _instance; \}\

\- (id)copywithzone:(nszone *)zone \

#import

// 包入單例標頭檔案

#import

"wqsingleton.h"

@inte***ce wqperson : nsobject

/** 姓名*/

@property (nonatomic, strong) nsstring *name;

/** 年齡*/

@property (nonatomic, assign) nsinteger age;

// 使用巨集,引數為該類的去掉字首的名稱

wqsingletonh(person);

@end

#import

"wqperson.h"

@inte***ce wqperson ()

@end

@implementation wqperson

// 使用巨集定義單例實現

wqsingletonm(person);

@end

// 使用

- (void)viewdidload

#import 

@inte***ce

wqperson : nsobject

+ (instancetype)sharedinstance;

@end

#import "wqperson.h"

@inte***ce

wqperson()

@end

@implementation

wqperson

static

id _instance;

+ (instancetype)allocwithzone:(struct _nszone *)zone

}return _instance;

}+ (instancetype)sharedinstance

}return _instance;

}- (id)copywithzone:(nszone *)zone

@end

巨集定義C 單例模式

通用的標頭檔案 巨集定義乙個類實現單例需要做的一些工作。每個單例類最好將其建構函式和虛析構函式設定為private pragma once define singleton declare theclass 標頭檔案類中呼叫 public static theclass snglptr static...

巨集定義抽取單例

ios單例設計模式中,我們可以發現,每乙個單例的寫法都是相同的,所以我們可以把他們抽取出來,放在乙個檔案中,當我們要定義乙個單例類的時候,就不用再寫重複的 了.下面就教大家用巨集定義抽取單例 建立乙個.h檔案,將相同的 用巨集定義定義 singleton.h 以後就可以使用inte cesingle...

C 單例類實現巨集定義

專案中單例類很多的話,每個都要宣告 回比較累贅,所以寫了乙個巨集定義簡介使用 巨集定義如下 define declare sington classname private classname classname classname const classname classname operato...