基礎(chǔ)二:安全的單例模式

1互婿、首先捣郊,我們來了解一下什么是單例模式?單例模式是在整個(gè)應(yīng)用程序中只被初始化一次慈参,且是該類的唯一的實(shí)例呛牲。它的優(yōu)點(diǎn):易于外界訪問;費(fèi)時(shí)省內(nèi)存驮配;線程安全娘扩。缺點(diǎn):責(zé)任過重尊勿;不易擴(kuò)展;長時(shí)間未使用畜侦,系統(tǒng)會回收元扔,導(dǎo)致對象的狀態(tài)丟失。

2旋膳、代碼如下:

static XXXClass *_instance = nil;
+ (instancetype)shareInstance {
    if (!_instance) {
        _instance = [[super alloc] init];
    }
    
    return _instance;
}
//調(diào)用alloc方法時(shí)澎语,OC內(nèi)部會調(diào)用allocWithZone這個(gè)方法來申請內(nèi)存,此時(shí)我們可重寫此方法验懊。
+ (instancetype)allocWithZone:(struct _NSZone *)zone {
    static dispatch_once_t onceToken;
    //保證只初始化一次
    dispatch_once(&onceToken, ^{
        if (!_instance) {
            _instance = [super allocWithZone:zone];
        }
    });
    
    return _instance;
}

- (id)copy {
    return _instance;
}

- (id)mutableCopy {
    return _instance;
}

最后擅羞,為什么我們需要創(chuàng)建安全的單例模式呢?那是因?yàn)榉乐雇獠客ㄟ^alloc和init以及copy來構(gòu)造對象這種現(xiàn)象义图。

參考鏈接:https://blog.csdn.net/Nirvana_666/article/details/51854463
http://www.reibang.com/p/d07298613f86
http://blog.jimmyis.in/dispatch_once/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末减俏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子碱工,更是在濱河造成了極大的恐慌娃承,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怕篷,死亡現(xiàn)場離奇詭異历筝,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)廊谓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門梳猪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蒸痹,你說我怎么就攤上這事春弥。” “怎么了叠荠?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵匿沛,是天一觀的道長。 經(jīng)常有香客問我蝙叛,道長俺祠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任借帘,我火速辦了婚禮蜘渣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肺然。我一直安慰自己蔫缸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布际起。 她就那樣靜靜地躺著拾碌,像睡著了一般吐葱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上校翔,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天弟跑,我揣著相機(jī)與錄音,去河邊找鬼防症。 笑死孟辑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蔫敲。 我是一名探鬼主播饲嗽,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼奈嘿!你這毒婦竟也來了貌虾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤裙犹,失蹤者是張志新(化名)和其女友劉穎尽狠,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伯诬,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晚唇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盗似。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡平项,死狀恐怖赫舒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情闽瓢,我是刑警寧澤接癌,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站扣讼,受9級特大地震影響缺猛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜椭符,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一荔燎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧销钝,春花似錦有咨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽婉商。三九已至,卻和暖如春渣叛,著一層夾襖步出監(jiān)牢的瞬間丈秩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工淳衙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蘑秽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓滤祖,卻偏偏與公主長得像筷狼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子匠童,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評論 2 355

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

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 29,392評論 8 265
  • 單例模式 什么是單例模式埂材? 單例模式想一個(gè)大獨(dú)裁者,他規(guī)定在他的國度里面汤求,所有數(shù)據(jù)的訪問和請求都得經(jīng)過他俏险,甚至你要...
    GitHubPorter閱讀 1,161評論 0 4
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,103評論 1 32
  • OC語言基礎(chǔ) 1.類與對象 類方法 OC的類方法只有2種:靜態(tài)方法和實(shí)例方法兩種 在OC中,只要方法聲明在@int...
    奇異果好補(bǔ)閱讀 4,273評論 0 11
  • @WilliamAlex大叔 前言 目前流行的社交APP中都離不開單例的使用,我們來舉個(gè)例子哈,比如現(xiàn)在流行的"糗...
    Alexander閱讀 1,920評論 6 28