swift - 單類寫法

單類的寫法:


  1. 最丑陋方法(Swift皮, Object-C 心)
class TheOneAndOnlyKraken{//類名
    class var sharedInstance: TheOneAndOnlyKraken{//類屬性
        struct Static {//結(jié)構(gòu)體
            static var onceToken: dispatch_once_t = 0
            static var instance: TheOneAndOnlyKraken?= nil
        }
      dispatch_once(&Static.onceToken){// 單類的構(gòu)成
            Static.instance = TheOneAndOnlyKraken()
            }
        return Static.instance!
    }
}

  1. 結(jié)構(gòu)體方法(新瓶裝老酒)
class TheOneAndOnlyKraken {
    class var sharedInstance: TheOneAndOnlyKraken {// 類屬性
        struct Static {// 結(jié)構(gòu)體
            static let instance = TheOneAndOnlyKraken()// 靜態(tài)常量
        }
        return Static.instance
    }
}

  1. 全局變量方法(單行單類)
private let sharedKraken = TheOneAndOnlyKraken()
class TheOneAndOnlyKraken {
    class var shareInstance: TheOneAndOnlyKraken{
        return sharedKraken
    }
}

  1. 正確的單類寫法
class TheOneAndOnlyKraken {
    static let sharedInstance = TheOneAndOnlyKraken()
}

“全局變量(還有結(jié)構(gòu)體和枚舉體的靜態(tài)成員)的Lazy初始化方法會在其被訪問的時候調(diào)用一次。類似于調(diào)用'dispatch_once'以保證其初始化的原子性。這樣就有了一種很酷的'單次調(diào)用'方式:只聲明一個全局變量和私有的初始化方法即可?!?-來自Apple's Swift Blog

  1. 最終的寫法
class TheOneAndOnlyKraken{
    static let sharedInstance = TheOneAndOnlyKraken()
    private init()////This prevents others from using the default '()' initializer for this class
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 單例模式(SingletonPattern)一般被認為是最簡單、最易理解的設(shè)計模式,也因為它的簡潔易懂,是項目中最...
    成熱了閱讀 4,293評論 4 34
  • 一 、OC中單例的寫法:1.普通單例的寫法 2. 利用多線程來寫單例 #pragma mark --- 普通單例寫...
    天涯海角我愛你閱讀 1,790評論 0 3
  • 往事回憶之ObjC單例Swift是Objective-C的一種自然演變,它用如下的方式實現(xiàn)單例: 在這個現(xiàn)成方案中...
    王小賓閱讀 3,201評論 0 5
  • “你知道茴香豆的‘茴’字有幾種寫法嗎?” 糾結(jié)單例模式有幾種寫法有用嗎?有點用,面試中經(jīng)常選擇其中一種或幾種寫法作...
    猴子007閱讀 989評論 0 4
  • 青春是有味道的,你的味道,你們的味道。 結(jié)束了令人作嘔的實訓(xùn)月,終于迎來了期待已久的海濱之旅。翹一節(jié)懶得呵呵的英語...
    聽故事的狼閱讀 772評論 2 3