国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

一句話實現OC單例模式

2019-11-14 18:43:21
字體:
來源:轉載
供稿:網友

首先新建一個頭文件,定義如下宏:

// .h文件的實現#define SingletonH(methodName) + (instancetype)shared##methodName;// .m文件的實現#if __has_feature(objc_arc) // 是ARC#define SingletonM(methodName) /static id _instace = nil; /+ (id)allocWithZone:(struct _NSZone *)zone /{ /if (_instace == nil) { /static dispatch_once_t onceToken; /dispatch_once(&onceToken, ^{ /_instace = [super allocWithZone:zone]; /}); /} /return _instace; /} //- (id)init /{ /static dispatch_once_t onceToken; /dispatch_once(&onceToken, ^{ /_instace = [super init]; /}); /return _instace; /} //+ (instancetype)shared##methodName /{ /return [[self alloc] init]; /} /+ (id)copyWithZone:(struct _NSZone *)zone /{ /return _instace; /} //+ (id)mutableCopyWithZone:(struct _NSZone *)zone /{ /return _instace; /}#else // 不是ARC#define SingletonM(methodName) /static id _instace = nil; /+ (id)allocWithZone:(struct _NSZone *)zone /{ /if (_instace == nil) { /static dispatch_once_t onceToken; /dispatch_once(&onceToken, ^{ /_instace = [super allocWithZone:zone]; /}); /} /return _instace; /} //- (id)init /{ /static dispatch_once_t onceToken; /dispatch_once(&onceToken, ^{ /_instace = [super init]; /}); /return _instace; /} //+ (instancetype)shared##methodName /{ /return [[self alloc] init]; /} //- (oneway void)release /{ //} //- (id)retain /{ /return self; /} //- (NSUInteger)retainCount /{ /return 1; /} /+ (id)copyWithZone:(struct _NSZone *)zone /{ /    return _instace; /} / /+ (id)mutableCopyWithZone:(struct _NSZone *)zone /{ /    return _instace; /}#endif

然后在你定義單例類的

.h 文件 寫 SingletonH(MyMethodName) 

.m 文件寫 SingletonM(MyMethodName)

搞定!

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南昌县| 冕宁县| 盈江县| 藁城市| 铜梁县| 兰州市| 崇明县| 灯塔市| 浦北县| 延川县| 福安市| 申扎县| 郎溪县| 衡水市| 新丰县| 开鲁县| 江山市| 驻马店市| 乌鲁木齐市| 东莞市| 贵德县| 皋兰县| 潜山县| 满洲里市| 中西区| 磴口县| 五台县| 文昌市| 二连浩特市| 黑山县| 许昌县| 天峻县| 黔西| 河南省| 临泽县| 富民县| 个旧市| 台山市| 灌南县| 汾西县| 商都县|