iOS Singleton
單例模式 Singleton,是一種常用的軟體設計模式 (design pattern),屬於創建型模式的一種。在應用單例時,單例物件的類必須保證只會有一個實例存在。許多時候整個系統需要一個全局的物件,這樣有利於我們協調系統整體行為。
比如在某個服務器程式,該服務器的配置信息存放在一個文件中,這些配置數據由一個單例物件統一讀取,然後服務程序中的其他物件再通過這個單例物件獲取這些配置信息。這種方式簡化了在複雜環境下的配置管理。
實現單例模式的思路是:確保要實作單例的類返回的對象永遠是同一個。
Objective-C 的做法:
之所以使用 dispatch_once 的原因,是為了避免在多重 thread 的環境下,sharedInstance 可能會被重複建立的問題。
Swift 寫法:
Swift的寫法簡單很多。首先, Create 一個 static 且為 constant 的 instance。然後 initializer 必須是 private initializer,只能被 MyClass 自己呼叫。
如果是要寫成 Objective-C 能調用的物件,就要繼承 NSObject