Swift中简单的单例设计

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的比较。

原文地址:https://www.cnblogs.com/Rinpe/p/5223065.html