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

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

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

Swift3 單例模式

常見的有這么幾種方法

第一種簡單到爆的

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

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

第二種

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中廢棄了原來的dispatch_once_t,所以需要先給DispatchQueue添加一個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()方法會報錯,所以這種寫法在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)變量

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

相關(guān)文章

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

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

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

    iOS10適配(必看)

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

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

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

    IOS 簽名錯誤codesign failed with exit code 1解決方法

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

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

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

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

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

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

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

    ios12中遇到的帶input彈窗的錯位問題的解決方法

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

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

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

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

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

最新評論