Swift - 單例的創(chuàng)建方法

在爪哇中的單例定義:一個(gè)類有且僅有一個(gè)實(shí)例,并且自行實(shí)例化向整個(gè)系統(tǒng)提供

class singleClass: NSObject {
    var value = 0
    
    //方式一 全局變量
   static let singleDefault = singleClass()
    
    //方式二 使用GCD -> 單例
   class func shareDefault() -> singleClass {
        struct once {
            static var onceToken: dispatch_once_t = 0
            static var shareSingle:singleClass! = nil
        }
        dispatch_once(&once.onceToken) {
            once.shareSingle = singleClass()
        }
        return once.shareSingle
    }
    
    //方式三 使用結(jié)構(gòu)體 -> 單例
   class func shareDefault2() -> singleClass {
        struct single {
            static var singleDefault = singleClass()
        }
        return single.singleDefault
    }
    
    private override init() {} //防止被再次實(shí)例化
}
/*
let single1 = singleClass.singleDefault
let single2 = singleClass.shareDefault()
let single3 = singleClass.shareDefault2()

單例

使用例子:比如在游戲中都有唯一一個(gè)游戲管理者統(tǒng)一管理加分之類的,多個(gè)的話就會(huì)出現(xiàn)數(shù)據(jù)不同步混淆混亂等

GameManager.Swift

public class GameManager {
    
    public var score = 0
    
    public static let defaultGameManager = GameManager()
    private init() { } //防止被初始化
    
    public func addScore() {
        score += 10
    }
}

-> 下面 gm1 與 gm2 都是指向同一個(gè)實(shí)例(相對(duì)于它的花名),并沒有創(chuàng)建新的實(shí)例

let gm1 = GameManager.defaultGameManager
gameManager.addScore()
gameManager.score
// = 10

let gm2 = GameManager.defaultGameManager
gm.addScore()
gm.score

// = 20
最后編輯于
?著作權(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)容

  • 斯達(dá)爾夫人社會(huì)批評(píng)觀認(rèn)為文學(xué)與其所依附的自然環(huán)境和廣義的社會(huì)制度密切相關(guān)。她在《論文學(xué)》中明確指出廣義的社會(huì)制度涉...
    簡(jiǎn)書穆清閱讀 1,328評(píng)論 14 45
  • 今天重溫了電影《中國合伙人》,這部電影已經(jīng)看了五六遍了,甚至像胖哥說的有些臺(tái)詞都能倒背如流了吧,但還是喜歡,我覺得...
    丿子木丨閱讀 216評(píng)論 0 0
  • 朵朵葵花笑向陽,白云喜景舞飛揚(yáng)。 晨鐘醒起尋光影,旭日東升闊步昂。 意切情深心駐愛,朝朝暮暮念一生。 青天撫育溫馨...
    六月天氣閱讀 648評(píng)論 24 27
  • 這是筆者第三篇寫關(guān)于紅酒的文章,前兩篇分別介紹了葡萄酒術(shù)語和紅酒杯挑選,相信對(duì)于紅酒都有所了解,那么重要的來了,作...
    清聽閱讀 999評(píng)論 0 5

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