兩種單例的實(shí)現(xiàn)方式

在IOS中單例設(shè)計(jì)模式有很廣泛的用途,它保證一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn),一個(gè)app只有一個(gè)實(shí)列,也就是說他一直存在,除非你手動(dòng)置空,在內(nèi)存里面也只會(huì)用到一個(gè)地址.

蘋果官方提供了很多單列對(duì)象供用戶使用,例如:

- UIApplication 類提供了 +sharedApplication 方法創(chuàng)建和獲取 UIApplication 單例.
- NSBundle 類提供了 +mainBundle 方法獲取 NSBundle 單例.
- NSFileManager 類提供了 +defaultManager 方法創(chuàng)建和獲得 NSFileManager 單例(使用代理時(shí)需要調(diào)用 -init 實(shí)例化方法來實(shí)例化一個(gè)新的對(duì)象).
- NSUserDefaults 類提供了 +defaultUserDefaults 方法去創(chuàng)建和獲取 NSUserDefaults 單例.
- NSNotificationCenter 類提供了 +defaultCenter 方法創(chuàng)建和獲取 NSNotificationCenter 單例.

我所知道的單例有兩種實(shí)現(xiàn)方式,根據(jù)線程安全的實(shí)現(xiàn)來區(qū)分的話,一種是使用@synchronized,另一種是使用GCD的dispatch_once函數(shù)。

synchronized線程鎖的方式
+(instancetype)sharedPersonSync{
    static id instance;
    @synchronized(self) {
        if(instance == nil){
            instance = [[self alloc] init];
        }
    }
    return instance;
}
GCD方式
+(instancetype)sharedPerson{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [[self alloc] init];
    });
    return instance;
}

Warning:單例雖然可以達(dá)到共享傳值的目的,但非必要的情況下最好不要使用單例的方式實(shí)例化對(duì)象.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在IOS中單例設(shè)計(jì)模式有很廣泛的用途,它保證一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn),一個(gè)app只有一個(gè)實(shí)...
    sunmumu1222閱讀 223評(píng)論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,638評(píng)論 18 399
  • 單例模式(SingletonPattern)一般被認(rèn)為是最簡(jiǎn)單、最易理解的設(shè)計(jì)模式,也因?yàn)樗暮?jiǎn)潔易懂,是項(xiàng)目中最...
    成熱了閱讀 4,532評(píng)論 4 34
  • 1 場(chǎng)景問題# 1.1 讀取配置文件的內(nèi)容## 考慮這樣一個(gè)應(yīng)用,讀取配置文件的內(nèi)容。 很多應(yīng)用項(xiàng)目,都有與應(yīng)用相...
    七寸知架構(gòu)閱讀 6,966評(píng)論 12 68
  • 我喜歡安靜 也不喜歡安靜 我喜歡甜食 也不喜歡甜食 我喜歡酸的 也不喜歡酸的 我喜歡你 但我并不愛你
    三哥講故事閱讀 244評(píng)論 1 3

友情鏈接更多精彩內(nèi)容