import Foundation class Test: NSObject { // 提供单例实例
static let shareInstance = Test() // 私有化构造方法
override private init() {}
}
import Foundation let testOne = Test.shareInstance
let testTwo = Test.shareInstance
if testOne === testTwo {
print("单例设计成功")
} else {
print("单例设计失败")
}
输出结果为: 单例设计成功
PS:
Test
中包含一个名为shareInstance
的静态常量属性。用static
申明属性意味着该属性只能存在一份。
这里要注意的是Swift中的静态属性都会延迟加载,也就是说只有instance
被使用时,才会初始化它。
还要注意的一点是,一旦instance
被初始化了,那么它就是一个常量属性,不会有第二次初始化的机会了。
另外:
其中===在Swift中代表“等价于”,比较的是两个变量或者常量的引用地址,只能用于class的比较。