#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...