下面的代码是我学习Swift的书中的单例。创造仅拥有该类型的一个对象的单身人士的目的不是什么?在操场上,我已经能够创建多个GameManager
s(var a = GameManager()
,var b = GameManager()
等。
顺便说一下,我知道只有一个defaultManager
对象,由于它是静态和常量(let)而无法更改。但我无法使用私有构造函数,因为我能够创建多个GameManager
。
class GameManager {
static let defaultManager = GameManager()
var gameScore = 0
var saveState = 0
private init() {}
}
答案 0 :(得分:8)
Playground可以访问私有构造函数,因为只要您的代码与私有代码在同一个文件中,Swift就允许您访问private
的任何内容。
由于直接在游乐场编辑器窗口中输入的所有内容都被视为单个文件,因此您可以从任何地方访问任何内容。
一旦将代码放在Playground之外,就会强制执行构造函数的可见性,从而阻止代码按预期创建GameManager
的实例。