iOS開(kāi)發(fā)淺談單例模式.doc

iOS開(kāi)發(fā)淺談單例模式.doc

ID:62033459

大?。?4.50 KB

頁(yè)數(shù):3頁(yè)

時(shí)間:2021-04-15

iOS開(kāi)發(fā)淺談單例模式.doc_第1頁(yè)
iOS開(kāi)發(fā)淺談單例模式.doc_第2頁(yè)
iOS開(kāi)發(fā)淺談單例模式.doc_第3頁(yè)
資源描述:

《iOS開(kāi)發(fā)淺談單例模式.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)

1、iOS開(kāi)發(fā)淺談單例模式先說(shuō)說(shuō)單例模式的概念,從百科里查到單例模式是一種常用的軟件設(shè)計(jì)模式。在它的核心結(jié)構(gòu)中只包含一個(gè)被稱為單例的特殊類。通過(guò)單例模式可以保證系統(tǒng)中一個(gè)類只有一個(gè)實(shí)例而且該實(shí)例易于外界訪問(wèn),從而方便對(duì)實(shí)例個(gè)數(shù)的控制并節(jié)約系統(tǒng)資源。如果希望在系統(tǒng)中某個(gè)類的對(duì)象只能存在一個(gè),單例模式是最好的解決方案.那么要編寫單例模式,首先要禁止外部創(chuàng)建對(duì)象,然后只允許自身內(nèi)部創(chuàng)建一個(gè)唯一的對(duì)象,那么外部有哪些可以創(chuàng)建對(duì)象的方式呢?在ARC模式下(MRC在此不作討論):1、使用類方法alloc???????2、使用類方法allocWithZone:3、使用對(duì)象方法

2、copy4、使用類方法new為了禁止這些方法,應(yīng)該重寫這些方法或想辦法讓這些方法不能被調(diào)用.1、類方法alloc由于此方法會(huì)默認(rèn)調(diào)用allocWithZone:,所以只需要處理allocWithZone:就可以了.2、類方法allocWithZone:重寫此方法,讓其直接調(diào)用當(dāng)前單例方法。3、對(duì)象方法copy此方法要求自定義類必須要遵循NSCopying協(xié)議,本身就不可以直接調(diào)用,不用做處理就好.4、類方法new此方法默認(rèn)調(diào)用alloc和init,上面已經(jīng)處理了alloc,這里不需要額外處理。寫到此處,單例模式已經(jīng)可以實(shí)現(xiàn),但是為了讓外部調(diào)用init的時(shí)候保

3、持一致性,也可以將init方法重寫一下(建議強(qiáng)迫癥的人使用,因?yàn)槠鋵?shí)不重寫也不影響)。好,看個(gè)例子:#import"MyApplication。h"@implementationMyApplication-(instancetype)init{return [[selfclass]sharedApplication];}-(instancetype)initPrivate{if(self=?。踫uperinit]){}returnself;}+(instancetype)allocWithZone:(struct_NSZone *)zone{return[s

4、elfsharedApplication];}+(MyApplication*)sharedApplication{staticMyApplication* application;/********方式一:使用GCDstaticdispatch_once_tonceToken;dispat(yī)ch_once(&onceToken,^{if (!application){application=[[superallocWithZone:NULL]initPrivate];    }?。弧。?*****************************///方

5、式二:@synchronized(self){if (!application){application=[[superallocWithZone:NULL]initPrivate];}?。颍錿urnapplication;}@end

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。