// 一般情況下, 如果一個(gè)類是單例, 那么都會提供一個(gè)類方法用于快速創(chuàng)建單例對象
// 而且這個(gè)類方法的名稱是有一定的規(guī)則: share + 類名稱 / default + 類名稱 / 類名稱開頭
#define interfaceSingle(name) + (instancetype)share##name
#if __has_feature(objc_arc)
// 如果是ARC
#define implementationSingle(name) + (instancetype)share##name \
{ \
return [[self alloc] init]; \
} \
static id _instance; \
+ (instancetype)allocWithZone:(struct _NSZone *)zone \
{ \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^{ \
_instance = [super allocWithZone:zone]; \
}); \
return _instance; \
} \
- (id)init \
{ \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^{ \
_instance = [super init]; \
}); \
return _instace; \
} \
- (id)copyWithZone:(NSZone *)zone \
{ \
return _instance; \
} \
- (id)mutableCopyWithZone:(NSZone *)zone \
{ \
return _instance; \
}
#else
// 如果不是ARC
#define implementationSingle(name) + (instancetype)share##name \
{ \
return [[self alloc] init]; \
} \
static id _instance; \
+ (instancetype)allocWithZone:(struct _NSZone *)zone \
{ \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^{ \
_instance = [super allocWithZone:zone]; \
}); \
return _instance; \
} \
- (id)copyWithZone:(NSZone *)zone \
{ \
return _instance; \
} \
- (id)mutableCopyWithZone:(NSZone *)zone \
{ \
return _instance; \
}\
- (oneway void)release \
{} \
- (instancetype)retain \
{ \
return _instance; \
} \
- (NSUInteger)retainCount \
{ \
return MAXFLOAT; \
}
#endif
單例
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門锅睛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來埠巨,“玉大人,你說我怎么就攤上這事现拒±崩荩” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵印蔬,是天一觀的道長勋桶。 經(jīng)常有香客問我,道長侥猬,這世上最難降的妖魔是什么例驹? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮退唠,結(jié)果婚禮上鹃锈,老公的妹妹穿的比我還像新娘。我一直安慰自己瞧预,他們只是感情好屎债,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著松蒜,像睡著了一般扔茅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上秸苗,一...
- 文/蒼蘭香墨 我猛地睜開眼璃诀,長吁一口氣:“原來是場噩夢啊……” “哼弧可!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起劣欢,我...
- 序言:老撾萬榮一對情侶失蹤棕诵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后凿将,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體校套,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年牧抵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了笛匙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侨把。...
- 正文 年R本政府宣布华匾,位于F島的核電站,受9級特大地震影響机隙,放射性物質(zhì)發(fā)生泄漏蜘拉。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一有鹿、第九天 我趴在偏房一處隱蔽的房頂上張望旭旭。 院中可真熱鬧,春花似錦葱跋、人聲如沸持寄。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽稍味。三九已至,卻和暖如春荠卷,著一層夾襖步出監(jiān)牢的瞬間模庐,已是汗流浹背。 一陣腳步聲響...
- 正文 我出身青樓慎冤,卻偏偏與公主長得像疼燥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子蚁堤,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 當(dāng)我們使用單例模式醉者,獲取單例的時(shí)候經(jīng)常見到下面這種寫法: 為什么會這么寫呢,原因是為了避免多線程并發(fā)的時(shí)候創(chuàng)建多余...
- Dagger2學(xué)習(xí)筆記1(基礎(chǔ)概念學(xué)習(xí))Dagger2學(xué)習(xí)筆記2(學(xué)習(xí)Dagger2的簡單使用)Dagger2學(xué)習(xí)...
- 單例模式的作用是用來解決一個(gè)應(yīng)用中某個(gè)類只有唯一一個(gè)對象的問題披诗。單例類在iOS開發(fā)中是非常重要的撬即,在系統(tǒng)提供個(gè)類中...