我正在使用此代码定义单例:
class MySingleton {
static let instance = MySingleton()
private init() {}
func example(myParameter:String) {
}
}
似乎可以正常运行,因为我可以正确地执行以下呼叫:
MySingleton.instance.example(myParameter:"a string")
奇怪的行为是我也可以做到这一点:
MySingleton.example(self: MySingleton.instance)
我知道我已经定义了一个静态属性来创建Singleton,但是函数example
不是静态的,为什么我可以从类级别调用它?另外,请注意第二个调用的参数,它没有接收到函数中定义的String
参数,而是接收的是self
类型的MySingleton
。
正如我所见,如果将函数定义为私有,这不会发生,但是显然我需要将其公开以正确使用,所以,我在错误地定义了什么?
我正在使用以下代码定义单例:class MySingleton {static let instance = MySingleton()private init(){} func example(myParameter:String){}}似乎可以正常工作...
尽管已经有人说过这个问题已经得到解决,所以我认为有一些差异使这个问题变得独特,这就是为什么我要回答这个问题。