2016-06-30 55 views
1

我想創建一個單身人士類。爲此,我曾嘗試使用兩種不同的方法,即斯威夫特單身人士和類屬性

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" 
} 

正在單身相當於這兩種方式?如果是的話,我應該使用哪一個和他們每個人在單身人士方面有什麼不同?

請幫忙.. !!!

回答

2

要在斯威夫特簡單singletone類,你可以寫:

class SomeManager { 
    static let sharedInstance = SomeManager() 
} 

使用

SomeManager.sharedInstance 

這是什麼意思?

由於斯威夫特1.2它可能做聲明靜態類屬性。所以你可以像這樣實現單例。在它存在的應用程序的生命週期中只能有一個實例。單例存在給我們提供單一的全局狀態。

第一種方法創建有這個初始化類singletone:Employee(firstName: "Payal", lastName: "Gupta")

第二種方法不創建singletone,是兩個靜態聲明的屬性的簡單類。

3

這兩種方法是不等效的:

  • 第一種方法創建一個實例Employee對象
  • 第二種方法定義了兩種類字段;它不會創建任何對象實例。

換句話說,只有第一種方法創建一個單例。第二種方法是在課堂級別收集相關字段。

0

嘗試......

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 
     } 
    }