在苹果的Using Swift with Cocoa and Objective-C document (针对Swift 3进行了更新)中,他们给出了单例模式的以下示例:
class Singleton {
static let sharedInstance: Singleton = {
let instance = Singleton()
// setup code
return instance
}()
}
让我们假设这个单例需要管理一个可变的字符串数组。如何/在何处声明该属性,并确保将其正确初始化为空的[String]
数组?
发布于 2016-06-22 04:28:07
你可以像这样初始化一个空数组。
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
}
}
发布于 2017-01-24 18:17:12
class Singleton {
// MARK: - Shared
static let shared = Singleton()
}
使用初始化方法:
class Singleton {
// MARK: - Shared
static let shared = Singleton()
// MARK: - Initializer
private init() {
}
}
发布于 2016-06-22 03:51:34
任何初始化都将在init方法中完成。单例和非单例在这里没有区别。
https://stackoverflow.com/questions/37953317
复制相似问题