具有 Swift 3 中属性的单例
Singleton with properties in Swift 3
在 Apple 的 Using Swift with Cocoa and Objective-C document(针对 Swift 3 进行了更新)中,他们给出了以下单例模式示例:
class Singleton {
static let sharedInstance: Singleton = {
let instance = Singleton()
// setup code
return instance
}()
}
让我们假设这个单例需要管理一个可变字符串数组。 How/where 我会声明 属性 并确保它正确初始化为空 [String]
数组吗?
任何初始化都将在 init 方法中完成。单例和非单例之间没有区别。
你可以像这样初始化一个空数组。
class Singleton {
//MARK: Shared Instance
static let sharedInstance : Singleton = {
let instance = Singleton(array: [])
return instance
}()
//MARK: Local Variable
var emptyStringArray : [String]
//MARK: Init
init( array : [String]) {
emptyStringArray = array
}
}
或者,如果您喜欢不同的方法,这个方法也行。
class Singleton {
//MARK: Shared Instance
static let sharedInstance : Singleton = {
let instance = Singleton()
return instance
}()
//MARK: Local Variable
var emptyStringArray : [String]? = nil
//MARK: Init
convenience init() {
self.init(array : [])
}
//MARK: Init Array
init( array : [String]) {
emptyStringArray = array
}
}
对我来说这是最好的方法,将 init 设为私有。 Swift 3\4\5语法
// MARK: - Singleton
final class Singleton {
// Can't init is singleton
private init() { }
// MARK: Shared Instance
static let shared = Singleton()
// MARK: Local Variable
var emptyStringArray = [String]()
}
class Singleton {
// MARK: - Shared
static let shared = Singleton()
}
初始化方法:
class Singleton {
// MARK: - Shared
static let shared = Singleton()
// MARK: - Initializer
private init() {
}
}
在 Apple 的 Using Swift with Cocoa and Objective-C document(针对 Swift 3 进行了更新)中,他们给出了以下单例模式示例:
class Singleton {
static let sharedInstance: Singleton = {
let instance = Singleton()
// setup code
return instance
}()
}
让我们假设这个单例需要管理一个可变字符串数组。 How/where 我会声明 属性 并确保它正确初始化为空 [String]
数组吗?
任何初始化都将在 init 方法中完成。单例和非单例之间没有区别。
你可以像这样初始化一个空数组。
class Singleton {
//MARK: Shared Instance
static let sharedInstance : Singleton = {
let instance = Singleton(array: [])
return instance
}()
//MARK: Local Variable
var emptyStringArray : [String]
//MARK: Init
init( array : [String]) {
emptyStringArray = array
}
}
或者,如果您喜欢不同的方法,这个方法也行。
class Singleton {
//MARK: Shared Instance
static let sharedInstance : Singleton = {
let instance = Singleton()
return instance
}()
//MARK: Local Variable
var emptyStringArray : [String]? = nil
//MARK: Init
convenience init() {
self.init(array : [])
}
//MARK: Init Array
init( array : [String]) {
emptyStringArray = array
}
}
对我来说这是最好的方法,将 init 设为私有。 Swift 3\4\5语法
// MARK: - Singleton
final class Singleton {
// Can't init is singleton
private init() { }
// MARK: Shared Instance
static let shared = Singleton()
// MARK: Local Variable
var emptyStringArray = [String]()
}
class Singleton {
// MARK: - Shared
static let shared = Singleton()
}
初始化方法:
class Singleton {
// MARK: - Shared
static let shared = Singleton()
// MARK: - Initializer
private init() {
}
}