什麼是設計模式。設計模式是在特定場景下對特定問題的解決方式。這些解決方式是通過重複論證和測試總結出來的。java
實際上。除了軟件設計,設計模式也被普遍應用於其它領域。比方UI設計和建築設計等。設計模式
如下來介紹Cocoa Touch框架中的設計模式中的單例模式。安全
單例模式多線程
單例模式的做用是解決「應用中僅僅有一個實例」的一類問題。在Cocoa Touch框架中,有UIApplication、NSUserDefaults和NSNotificationCenter等單例類。另外,NSFileManager和NSBundle類儘管屬於Cocoa框架的內容。但也可以在Cocoa Touch框架中使用(Cocoa框架中的單例類有NSFileManager、NSWorkspace和NSApplication等)。閉包
問題提出框架
在一個應用程序的生命週期中,有時候僅僅需要某個類的一個實例。post
好比:當iOS應用程序啓動時。應用的狀態由UIApplication類的一個實例維護。這個實例表明了整個「應用程序對象」,它僅僅能是一個實例。其做用是共享應用程序中的一些資源、控制應用程序的訪問,以及保持應用程序的狀態等。spa
解決方式線程
單例模式的實現有很是多方案,蘋果公司在《UsingSwift with Cocoa and Objective-C》官方文檔中給出了一種單例模式的實現。最簡單形式代碼例如如下:設計
class Singleton { static let sharedInstance = Singleton() }
上述代碼採用static的類屬性實現單例模式。這樣的類屬性僅僅被延遲載入運行一次。即使是在多線程狀況下也僅僅是運行一次,並且保證是線程安全的。
假設需要進行一些初始化,可以使用例如如下帶有閉包形式代碼:
class Singleton { static let sharedInstance: Singleton = { let instance = Singleton() // 初始化處理 return instance }() }
單例模式除了上述蘋果官方給出的實現外,還有很是多種實現方式。