[英]Singleton and Class Properties in Swift
我正在嘗試創建一個單例課程。 為此,我嘗試使用兩種不同的方法,即
1.首先方法- Employee
類包含兩個實例屬性,包含類和私人初始化,即共享實例類屬性
class Employee
{
var firstName : String
var lastName : String
static let sharedInstance = Employee(firstName: "Payal", lastName: "Gupta")
private init(firstName : String, lastName : String)
{
self.firstName = firstName
self.lastName = lastName
}
}
2.Second方法- Employee2
類包含兩個類的屬性,即
class Employee2
{
static var firstName : String = "SomeFirsrName"
static var lastName : String = "SomeLastName"
}
這兩種使單例相等的方法嗎? 如果是,我應該使用哪一個?就單例而言,它們之間有什么區別?
這兩種方法不等效:
Employee
對象的實例 換句話說,只有第一種方法會創建一個單例。 第二種方法在類級別收集相關字段。
要在Swift中創建一個簡單的單調類,您可以編寫:
class SomeManager {
static let sharedInstance = SomeManager()
}
用法 :
SomeManager.sharedInstance
這是什么意思?
從Swift 1.2開始 ,可以聲明靜態類屬性。 因此,您可以像這樣實現單例。 在存在的應用程序生命周期中,只能有一個實例。存在單例以提供單一的全局狀態。
第一種方法使用此初始化創建具有類的Employee(firstName: "Payal", lastName: "Gupta")
第二種方法不創建單調,它是一個具有兩個靜態聲明屬性的簡單類。
嘗試這個...
class Employee : NSObject
{
var firstName : String
var lastName : String
class var sharedInstance: Employee {
struct Static {
static let instance: Employee = Employee(firstName: "Payal", lastName: "Gupta")
}
return Static.instance
}
private init(firstName : String, lastName : String)
{
self.firstName = firstName
self.lastName = lastName
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.