gpt4 book ai didi

ios - 在 Swift 2.1 中使用单例

转载 作者:行者123 更新时间:2023-11-30 13:35:41 26 4
gpt4 key购买 nike

我编写了这个示例类来测试 Swift 2.1 中的单例:

class FGSingleton {
static let sharedInstance = FGSingleton()

var gameScore: Int = 0

let path = NSBundle.mainBundle().pathForResource("Data", ofType: "plist")
//below line is creating issue because of using sharedInstance
let dict = NSDictionary(contentsOfFile: sharedInstance.path!)

// METHODS
private init() {
print(__FUNCTION__)
}
func displayGameScore() {
print("\(__FUNCTION__) \(self.gameScore)")
}
func incrementGameScore(scoreInc: Int) {
self.gameScore += scoreInc
}
}

但是当我像这样FGSingleton.sharedInstance.displayGameScore()调用函数时,它永远不会调用该函数,也不会从init打印。我尝试调试它,发现光标永远不会进入函数内部。

这是由于我上面评论的错误行造成的。知道如何从sharedInstance调用全局变量来为另一个全局变量赋值吗?

最佳答案

我发现的最简单的解决方案是将全局变量初始化为可选,然后从 init() 内的另一个全局变量为其分配一个值。这是我更新的代码:

class FGSingleton {
static let sharedInstance = FGSingleton()

var gameScore: Int = 0

let path = NSBundle.mainBundle().pathForResource("Data", ofType: "plist")
//initialize as optional
let dict: NSDictionary?

// METHODS
private init() {
print(__FUNCTION__)
dict = NSDictionary(contentsOfFile: self.path!)
}
func displayGameScore() {
print("\(__FUNCTION__) \(self.gameScore)")
}
func incrementGameScore(scoreInc: Int) {
self.gameScore += scoreInc
}
}

如果还有其他更好的解决方案请告诉我。

关于ios - 在 Swift 2.1 中使用单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36100644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com