由于私有保护级别,Swift初始化程序无法访问

时间:2016-10-17 00:23:44

标签: swift singleton

我正在尝试在Swift中创建一个单例,但是我收到了这个错误:

  由于私有保护级别

初始化程序无法访问

这是我的代码(单件类)

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 你们中的任何人都知道为什么或如何解决这个错误?

2 个答案:

答案 0 :(得分:10)

你的专栏:

mySingleton().sharedInstance

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

你真正想要的是:

mySingleton.sharedInstance

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

BTW - 预计类名以大写字母开头。方法和变量名称应以小写字母开头。

答案 1 :(得分:0)

用于按实例对象使用

mySingleton类{

private init() {    }

static let sharedInstance = mySingleton()

var sharedInstanceByInstance: mySingleton{
    return mySingleton.sharedInstance
}
//Usage: mySingleton().sharedInstanceByInstance

// or

func getShared()-> mySingleton{
    return mySingleton.sharedInstance
}   
 //Usage: mySingleton().getShared()
}