首页 > 解决方案 > 需要对单例实例进行说明,因为它确实具有实例化到同一类的静态属性

问题描述

testScore(在下面的 SandwichStore 类的类定义中给出)如何是一个单例实例,因为它确实具有实例化到同一个类的静态属性?

我是 SwiftUI 的新手,对 Swift 还算满意。当我与 WWDC SwiftUI 视频教程一起编写代码时,我无法理解 testScore 在这里如何成为单例实例?为什么它没有一个共享的静态属性来实例化 API 类中的类?

import Foundation
class SandwichStore {
    var sandwiches: [Sandwich]
    
    init(sandwiches:[Sandwich] = []) {
        self.sandwiches = sandwiches
    }
    
    let testScore = SandwichStore(sandwiches: testData)
}




class API
{
    static let shared = API()
    var isRequestPending = false

    private init() { }
}

标签: iosswift

解决方案


如果您仔细查看 WWDC 会话视频中的代码,您会发现它testStore超出了类定义。

实际代码是:

class SandwichStore {
    var sandwiches: [Sandwich]
    
    init(sandwiches:[Sandwich] = []) {
        self.sandwiches = sandwiches
    }
}

let testStore = SandwichStore(sandwiches: testData)

尽管演示者说,testStore它不是一个单例,它实际上是一个全局常量。主持人可能只是误会了。

如果SandwichStore采用单例模式,则无法实例化运行应用程序测试商店所需的商店。

单例是一个类的实例,因此全局最多可以保存对单例实例的引用。


推荐阅读