下面的代码是我学习swift的一本书中的一个单例代码。创建单例的目的不是只有一个这种类型的对象吗?在操场上,我可以创建多个GameManagers(var a = GameManager()var b = GameManager()etc.)
顺便说一句,我知道只有一个对象,由于它是静态的和恒定的(let),所以不能更改它。但是我无法使用私有构造函数,因为我能够创建多个defaultManagers。

class GameManager {
    static let defaultManager = GameManager()
    var gameScore = 0
    var saveState = 0
    private init() {}
}

最佳答案

Playground可以访问私有构造函数,因为Swift允许您访问private的任何内容,只要您的代码与私有代码在同一个文件中。
因为直接输入操场编辑器窗口的所有内容都被视为单个文件,所以您可以从任何地方访问任何内容。
但是,一旦将代码放在操场之外,就会强制实现构造函数的可见性,从而阻止代码按预期创建GameManager的实例。

08-03 22:52