2016-12-27 40 views
0

我在一段時間內沒有發現自己使用單例,因爲我從靜態類中獲得了所有的功能。我應該注意到兩者之間有什麼區別?在Swift中,Singleton和一個類的靜態版本有什麼區別?

的Singleton實施例:

class SomeManager { 
    static let sharedInstance = SomeManager() 
    var user: User! 
    init(user: User) { 
     self.user = user 
    } 
} 

隨着用法:

SomeManager.sharedInstance.user 

靜態類實例:

class SomeManager { 
    static var user: User! 
    init(user: User) { 
     SomeManager.user = user 
    } 
} 

隨着用法:

SomeManager.user 

我知道顯而易見的區別是,一個是整個類被製作爲靜態,另一個是聲明特定部分(希望來自單個實例)靜態。是否有任何理由相互使用一個。

我有一個設置爲我的網絡現在,我有一個單一類的網絡調用,通過一堆靜態方法在一個什麼都不做,但包含網絡單體及其靜態方法的類中訪問。我認爲這對我的方案有適當的範圍,但沒有做足夠的研究來保證方法的質量。

例子:

class NetworkCalls { 
    static let network = Network() 

    static func getToken(completion:() -> Void) { 
     network.apiGetToken() { 
      completion() 
     } 
    } 
} 

的使用方式:

NetworkCalls.getToken() { 
    print("Network Call Completed") 
} 

它正常工作,所以我只想找效率的問題,事情要考慮,這和替代之間的差異方法。任何提示/建議將不勝感激!

+1

([靜態功能和快捷的單例類之間的不同]的可能的複製http://stackoverflow.com/questions/37806982/difference-between -static-功能和單級式-SWIFT)。 –

回答

0

我可能是錯的,但單例的想法是爲所有應用程序獲得一個唯一的單類,這個類只在生命期內(大多數情況下)初始化一次,並且主要用於生命週期中的狀態驗證的應用程序。

靜態類是更通用的一種類。

Althought你可以做同樣的一個靜態類...

相關問題