我正在尝试创建一个单例类。为此,我尝试使用两种不同的方法,即
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.第二种方法 - Employee2
类包含两个类属性,即
class Employee2
{
static var firstName : String = "SomeFirsrName"
static var lastName : String = "SomeLastName"
}
这两种使单身人物等效的方法吗?如果是的话,我应该使用哪一个,以及单身人士之间的差异是什么?
答案 0 :(得分:3)
这两种方法并不等同:
Employee
对象换句话说,只有第一种方法才能创建单身人士。第二种方法在类级别创建相关字段的集合。
答案 1 :(得分:2)
要在Swift中创建一个简单的单一类,你可以写:
class SomeManager {
static let sharedInstance = SomeManager()
}
<强>用法强>:
SomeManager.sharedInstance
这是什么意思?
由于 Swift 1.2 ,它可以声明静态类属性。所以你可以像这样实现单例。在它存在的应用程序的生命周期中只能有一个实例。存在单例来给我们提供单一的全局状态。
第一种方法是创建一个单一的,具有初始化的类:Employee(firstName: "Payal", lastName: "Gupta")
第二种方法不创建单一的方法,是一个带有两个静态声明属性的简单类。
答案 2 :(得分: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
}
}