我编写了这个示例类来测试Swift 2.1中的Singleton:
FGSingleton.sharedInstance.displayGameScore()
但是当我像这样init
调用func时,它从不调用该函数,也不会从{{1}}打印。我试图调试它,发现光标永远不会进入函数内部。
这是由于我在上面评论过的错误行。知道如何从sharedInstance调用全局变量来为另一个全局变量赋值吗?
答案 0 :(得分:0)
我发现最简单的解决方案是将全局var初始化为可选,然后为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
}
}
如果还有其他更好的解决方案,请告诉我。