欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

IOS  Swift3 四種單例模式詳解及實(shí)例

 更新時(shí)間:2016年12月24日 11:07:55   作者:ParadiseMayCry  
這篇文章主要介紹了IOS Swift3 四種單例模式詳解及實(shí)例的相關(guān)資料,這里對(duì)四種單例模式進(jìn)行了實(shí)例介紹 ,需要的朋友可以參考下

Swift3 單例模式

常見(jiàn)的有這么幾種方法

第一種簡(jiǎn)單到爆的

final class Single: NSObject { 
  static let shared = Single() 
  private override init() {} 
} 

final關(guān)鍵字的作用是這個(gè)類或方法不希望被繼承和重寫

第二種

public extension DispatchQueue { 
  private static var onceToken = [String]() 
  public class func once(_ token: String, _ block: () -> Void) { 
    objc_sync_enter(self) 
    defer { 
      objc_sync_exit(self) 
    } 
    if onceToken.contains(token) { 
      return 
    } 
    onceToken.append(token) 
    block() 
  } 
} 
 
final class Single2: NSObject { 
  static func shared() -> Single2 { 
    struct Singleton { 
      static var single: Single2? 
    } 
    DispatchQueue.once(NSUUID().uuidString) { 
      Singleton.single = shared() 
    } 
    return Singleton.single! 
  } 
} 

第二種完全是OC風(fēng)格的單例,但是由于Swift3中廢棄了原來(lái)的dispatch_once_t,所以需要先給DispatchQueue添加一個(gè)extension,實(shí)現(xiàn)原先的dispatch_once_t效果

第三種

private let single = Single3() 
final class Single3: NSObject { 
  static var shared: Single3 { 
    return single 
  } 
} 

由于Swift3中加強(qiáng)了權(quán)限控制,導(dǎo)致如果重寫private override init()方法會(huì)報(bào)錯(cuò),所以這種寫法在Swift3中的安全性未知。

第四種

final class Single4: NSObject { 
  static var shared: Single4 { 
    struct Static { 
      static let instance: Single4 = Single4() 
    } 
    return Static.instance 
  } 
  private override init() {} 
} 

在方法內(nèi)定義靜態(tài)變量

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • iOS 加載Bundle文件的實(shí)例代碼

    iOS 加載Bundle文件的實(shí)例代碼

    這篇文章主要介紹了iOS 加載Bundle文件的實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),需要的朋友參考下
    2016-12-12
  • iOS10適配(必看)

    iOS10適配(必看)

    這篇文章主要介紹了iOS10適配(必看)的相關(guān)資料,本文圖文并茂介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • iOS ScrollView實(shí)現(xiàn)自動(dòng)布局的方法(適用Swift 3.0 )

    iOS ScrollView實(shí)現(xiàn)自動(dòng)布局的方法(適用Swift 3.0 )

    傳說(shuō)中有一個(gè)美工ios開(kāi)發(fā)者在遇到這個(gè)問(wèn)題的時(shí)候特意跑到蘋果總部去咨詢?nèi)绾螌?duì)scrollview進(jìn)行自動(dòng)布局。當(dāng)然大家不用去了,下面這篇文章就來(lái)給大家介紹關(guān)于iOS ScrollView實(shí)現(xiàn)自動(dòng)布局的方法,文中的語(yǔ)法同樣也適用Swift 3.0 ,需要的朋友可以參考下。
    2017-12-12
  • IOS 簽名錯(cuò)誤codesign failed with exit code 1解決方法

    IOS 簽名錯(cuò)誤codesign failed with exit code 1解決方法

    這篇文章主要介紹了IOS 簽名錯(cuò)誤codesign failed with exit code 1解決方法的相關(guān)資料,遇到同樣問(wèn)題的朋友可以看下,這里提供了解決方案,需要的朋友可以參考下
    2017-01-01
  • 詳解iOS中position:fixed吸底時(shí)的滑動(dòng)出現(xiàn)抖動(dòng)的解決方案

    詳解iOS中position:fixed吸底時(shí)的滑動(dòng)出現(xiàn)抖動(dòng)的解決方案

    這篇文章主要介紹了詳解iOS中position:fixed吸底時(shí)的滑動(dòng)出現(xiàn)抖動(dòng)的解決方案,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • iOS實(shí)現(xiàn)攝像頭實(shí)時(shí)采集圖像

    iOS實(shí)現(xiàn)攝像頭實(shí)時(shí)采集圖像

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)攝像頭實(shí)時(shí)采集圖像,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • 圖文講解如何解決App的iOS 7頂部狀態(tài)欄適配問(wèn)題

    圖文講解如何解決App的iOS 7頂部狀態(tài)欄適配問(wèn)題

    至今很多iOS App還要照顧到iOS 7進(jìn)行最低的版本適配,而iOS7開(kāi)始status bar的實(shí)際屏幕占用情況與iOS 6等不盡相同,這里我們就來(lái)以圖文講解如何解決App的iOS 7頂部狀態(tài)欄適配問(wèn)題
    2016-06-06
  • ios12中遇到的帶input彈窗的錯(cuò)位問(wèn)題的解決方法

    ios12中遇到的帶input彈窗的錯(cuò)位問(wèn)題的解決方法

    這篇文章主要介紹了ios12中遇到的帶input彈窗的錯(cuò)位問(wèn)題的解決方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • Flutter繪制3.4邊形及多邊形漸變動(dòng)畫實(shí)現(xiàn)示例

    Flutter繪制3.4邊形及多邊形漸變動(dòng)畫實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了Flutter繪制3.4邊形之多邊形漸變動(dòng)畫實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • UITableViewCell在編輯狀態(tài)下背景顏色的修改方法

    UITableViewCell在編輯狀態(tài)下背景顏色的修改方法

    這篇文章主要給大家介紹了關(guān)于UITableViewCell在編輯狀態(tài)下背景顏色的修改方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。
    2017-07-07

最新評(píng)論