關(guān)于iOS開(kāi)發(fā)單例使用問(wèn)題
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
原文鏈接:Avoiding Singleton Abuse
導(dǎo)語(yǔ)
單例(Singletons),是Cocoa的核心模式之一。在iOS上,單例十分常見(jiàn),比如:UIApplication,NSFileManager等等。雖然它們用起來(lái)十分方便,但實(shí)際上它們有許多問(wèn)題需要注意。所以在你下次自動(dòng)補(bǔ)全dispatch_once代碼片段的時(shí)候,想一下這樣會(huì)導(dǎo)致什么后果。
什么是單例
在《設(shè)計(jì)模式》一書(shū)中給出了單例的定義:
單例模式:保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。
單例模式提供了一個(gè)訪問(wèn)點(diǎn),供客戶類為共享資源生成唯一實(shí)例,并通過(guò)它來(lái)對(duì)共享資源進(jìn)行訪問(wèn),這一模式提供了靈活性。
在objective-c中,可以使用以下代碼創(chuàng)建一個(gè)單例:
+(instancetype)sharedInstance
{
static dispatch_once_t once;
static id sharedInstance;
dispatch_once(&once, ^{
sharedInstance = [[self alloc]init];
});
return sharedInstance;
}
當(dāng)類只能有一個(gè)實(shí)例,而且必須從一個(gè)訪問(wèn)點(diǎn)對(duì)其進(jìn)行訪問(wèn)時(shí)使用單例就顯得十分方便,因?yàn)槭褂脝卫WC了訪問(wèn)點(diǎn)的唯一、一致且為人熟知。
單例中的問(wèn)題
全局狀態(tài)
首先我們都應(yīng)該達(dá)成一個(gè)共識(shí)“全局可變狀態(tài)”是危險(xiǎn)的,因?yàn)檫@樣會(huì)讓程序變得難以理解和調(diào)試,就削減狀態(tài)性代碼上,面向?qū)ο?a href='http://www.www27dydycom.cn/v/tag/1315/' target='_blank' class='arckwlink_none'>編程應(yīng)該向函數(shù)式編程學(xué)習(xí)。
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
下載地址
關(guān)于iOS開(kāi)發(fā)單例使用問(wèn)題下載
相關(guān)電子資料下載
- iOS17.1可能明天發(fā)布,iOS17.1主要修復(fù)哪些問(wèn)題? 377
- 華為全新鴻蒙蓄勢(shì)待發(fā) 僅支持鴻蒙內(nèi)核和鴻蒙系統(tǒng)應(yīng)用 719
- 蘋(píng)果手機(jī)系統(tǒng)iOS 17遭用戶質(zhì)疑 731
- iPhone12輻射超標(biāo)?蘋(píng)果推送iOS 17.1解決此事 750
- 傳華為囤積零部件 目標(biāo)明年智能手機(jī)出貨7000萬(wàn)部;消息稱 MiOS 僅限國(guó)內(nèi),小米 28208
- 蘋(píng)果推送iOS17.0.3,解決iPhone15Pro系列存在機(jī)身過(guò)熱 216
- Testin云測(cè)兼容和真機(jī)服務(wù)平臺(tái)中上線iPhone 15系列手機(jī) 208
- 利爾達(dá)推出搭載HooRiiOS的Matter模組 145
- 運(yùn)放參數(shù)解析:輸入偏置電流(Ibias)和失調(diào)電流(Ios) 128
- 昆侖太科發(fā)布支持國(guó)產(chǎn)飛騰騰銳D2000芯片的開(kāi)源BIOS固件版本 448