【发布时间】:2016-03-19 10:39:52
【问题描述】:
我编写了这个示例类来测试 Swift 2.1 中的 Singleton:
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 调用全局变量来为另一个全局变量赋值吗?
【问题讨论】:
-
首先,您的代码不是 Swift 2.1 (
println)。此外,当我尝试使用您的代码调用FGSingleton.sharedInstance.displayGameScore()时,一切正常。 -
对不起,我的打字错误......但是这个示例代码在 ViewController 的
ViewDidLoad()函数中不起作用。 -
我也试过了。它从 ViewController 的
viewDidLoad()为我工作