由于私有(private)保护级别,Swift 初始值设定项无法访问

标签 swift singleton

我正尝试在 Swift 中创建一个单例,但出现此错误:

initializer is inaccessible due to private protection level

这是我的代码(单例类)

class mySingleton{

    private init() {    }
    static let sharedInstance = mySingleton()
    var numbers = 0

    func incrementNumberValue() {
        numbers += 1
    }
}

这是我调用单例的地方:

override func viewDidLoad() {
    super.viewDidLoad()
    let single = mySingleton().sharedInstance
}

这里是错误:

enter image description here 你们知道为什么或如何解决这个错误吗?

最佳答案

你的线路:

mySingleton().sharedInstance

有错别字。正如所写,您正在尝试创建 mySingleton 的实例,然后在新实例上调用 sharedInstance 方法。这是两个错误。

你真正想要的是:

mySingleton.sharedInstance

现在这会在您的 mySingleton 类上调用 sharedInstance 类型常量。

顺便说一句——类名应该以大写字母开头。方法和变量名称应以小写字母开头。

关于由于私有(private)保护级别,Swift 初始值设定项无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40076944/

相关文章:

java - Enum 是 JVM 范围的单例吗?

ios - 如何检测正在 WKWebView 中播放的电影?

ScrollView 不居中的快速缩放

ios - 从 Firebase 检索数据时获取错误的时间戳值? (IOS)

swift - 如何在 Swift 中删除字符串中的重复字符

swift - 标签栏打开相机 View 动画

Erlang 和 Singleton 的好习惯?

ios - 避免在 Objective-C 中滥用单例

ruby - 如何在单例类上定义类变量

java - Java 类的单个实例