iOS Singleton

kim_jin發表於2017-12-13

單例寫法

在OC中,我們通常是採用dispatch_once函式來幫助我們實現單例。dispatch_once可以保證馬上執行函式並且執行緒安全。

+ (instancetype)sharedInstance {
  static id _instance = nil;
  static dispatch_once_t onceToken;
  dispatch_once(&onceToken, ^{
    _instance = [[self alloc] init];
  });
  return _instance;
}
複製程式碼

在Swift中,可以使用static來修飾一個型別屬性,這樣的話保證了只會進行一次的延遲例項化並且是執行緒安全的。

class Singleton {
  static let sharedInstance = Singleton()
}
複製程式碼

如果你想要在初始化的時候設定其他屬性的話,也可以使用下面的方法

class Singleton {
  static let sharedInstance: Singleton = {
    let instance = Singleton()
    // setup code
    return instance
  }()
}
複製程式碼

參考連結:

  1. Using Swift with Cocoa and Objective-C (Swift 3.0.1)

相關文章