iOS單例模式(SingletonPattern)

①定義
單例模式確保某一個(gè)類只有一個(gè)實(shí)例陵叽,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。

②優(yōu)缺點(diǎn)
優(yōu)點(diǎn):為頻繁訪問(wèn)的第三方工具提供了唯一的實(shí)例寥假,從而節(jié)約系統(tǒng)資源妄壶,不用再頻繁地創(chuàng)建和銷毀對(duì)象,無(wú)疑提高了系統(tǒng)的性能键耕。

缺點(diǎn):不可過(guò)多的創(chuàng)建單例寺滚,因?yàn)閱卫龔膭?chuàng)建后到徹底關(guān)閉程序前都會(huì)一直存在,如果過(guò)多的創(chuàng)建單例無(wú)疑浪費(fèi)系統(tǒng)資源和影響系統(tǒng)效率屈雄。

③代碼實(shí)現(xiàn)
創(chuàng)建一個(gè)對(duì)象是先調(diào)用alloc方法分配對(duì)象內(nèi)存村视,再調(diào)用init方法進(jìn)行初始化,那么實(shí)現(xiàn)單例酒奶,重寫allocWithZone:方法就可以了蚁孔,用GCD的dispatch_once函數(shù)是比較簡(jiǎn)單的一種方式,因?yàn)橛幸粋€(gè)dispatch_once_t類型參數(shù)能保證只執(zhí)行一次。


+ (instancetype)allocWithZone:(struct _NSZone *)zone {

static dispatch_once_t onceToken;

static id instance;

dispatch_once(&onceToken, ^{

instance = [super allocWithZone:zone];

});

return instance;

}

④宏定義單例模式
如果多個(gè)類要實(shí)現(xiàn)單例模式惋嚎,我們可以定義個(gè)一個(gè)頭文件SingletonPattern.h杠氢,里面定義兩個(gè)宏,分別是聲明與實(shí)現(xiàn)另伍。


#ifndef SingletonPattern_h

#define SingletonPattern_h

#define WD_SINGLETON_PATTERN_INTERFACE(name) +(instancetype)shared##name;

#define WD_SINGLETON_PATTERN_IMPLEMENTATION(name) +(instancetype)shared##name {\

return [[self alloc] init];\

}\

+ (instancetype)allocWithZone:(struct _NSZone *)zone {\

static dispatch_once_t onceToken;\

static id instance;\

dispatch_once(&onceToken, ^{\

instance = [super allocWithZone:zone];\

});\

return instance;\

}\

//- (id)copyWithZone:(NSZone *)zone {\

//return self;\

//}

#endif

實(shí)現(xiàn)單例修然,只要導(dǎo)入頭文件"SingletonPattern.h",

在.h文件寫WD_SINGLETON_PATTERN_INTERFACE(類名),

在.m文件寫WD_SINGLETON_PATTERN_IMPLEMENTATION(類名),就可以了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末愕宋,一起剝皮案震驚了整個(gè)濱河市玻靡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌中贝,老刑警劉巖囤捻,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異邻寿,居然都是意外死亡蝎土,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門绣否,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)誊涯,“玉大人,你說(shuō)我怎么就攤上這事蒜撮”┕梗” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵段磨,是天一觀的道長(zhǎng)取逾。 經(jīng)常有香客問(wèn)我,道長(zhǎng)苹支,這世上最難降的妖魔是什么砾隅? 我笑而不...
    開(kāi)封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮债蜜,結(jié)果婚禮上晴埂,老公的妹妹穿的比我還像新娘。我一直安慰自己寻定,他們只是感情好儒洛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著特姐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪黍氮。 梳的紋絲不亂的頭發(fā)上唐含,一...
    開(kāi)封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音沫浆,去河邊找鬼捷枯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛专执,可吹牛的內(nèi)容都是我干的淮捆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼攀痊!你這毒婦竟也來(lái)了桐腌?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤苟径,失蹤者是張志新(化名)和其女友劉穎案站,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體棘街,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蟆盐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了遭殉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片石挂。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖险污,靈堂內(nèi)的尸體忽然破棺而出痹愚,到底是詐尸還是另有隱情,我是刑警寧澤罗心,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布里伯,位于F島的核電站,受9級(jí)特大地震影響渤闷,放射性物質(zhì)發(fā)生泄漏疾瓮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一飒箭、第九天 我趴在偏房一處隱蔽的房頂上張望狼电。 院中可真熱鬧,春花似錦弦蹂、人聲如沸肩碟。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)削祈。三九已至,卻和暖如春脑漫,著一層夾襖步出監(jiān)牢的瞬間髓抑,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工优幸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吨拍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓网杆,卻偏偏與公主長(zhǎng)得像羹饰,于是被迫代替她去往敵國(guó)和親伊滋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 單例模式(SingletonPattern)一般被認(rèn)為是最簡(jiǎn)單队秩、最易理解的設(shè)計(jì)模式笑旺,也因?yàn)樗暮?jiǎn)潔易懂,是項(xiàng)目中最...
    成熱了閱讀 4,253評(píng)論 4 34
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理刹碾,服務(wù)發(fā)現(xiàn)燥撞,斷路器,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • 1 場(chǎng)景問(wèn)題# 1.1 讀取配置文件的內(nèi)容## 考慮這樣一個(gè)應(yīng)用迷帜,讀取配置文件的內(nèi)容物舒。 很多應(yīng)用項(xiàng)目,都有與應(yīng)用相...
    七寸知架構(gòu)閱讀 6,769評(píng)論 12 68
  • 前言 本文主要參考 那些年戏锹,我們一起寫過(guò)的“單例模式”冠胯。 何為單例模式? 顧名思義锦针,單例模式就是保證一個(gè)類僅有一個(gè)...
    tandeneck閱讀 2,512評(píng)論 1 8
  • 01 前些日子有一個(gè)新朋友小果(化名)加我奈搜,我們聊得很投機(jī)悉盆,她說(shuō)她不想回老家結(jié)婚,不想過(guò)他兒時(shí)玩伴的那種日子馋吗,不想...
    老貓黑科技閱讀 428評(píng)論 8 9