【发布时间】:2016-05-05 16:56:08
【问题描述】:
我的班级“RunnerWindowController”中有这个功能:
func didChangeScreenParameters(){
runnerLayer.removeAllAnimations()
animateRunner()
}
我尝试使用以下方法从另一个类中调用该函数:
var RunnerWindowC: RunnerWindowController!
@IBAction func btnSenden(sender: AnyObject) {
RunnerWindowC.didChangeScreenParameters()
}
我收到这个致命错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
我不需要任何返回,只需要函数的执行。
编辑:2016 年 5 月 13 日
没有一个答案有帮助,因为我在 RunnerWindowController 中有一个 INIT。
已解决的问题:
我用 NSTimer 解决了这个问题。
RunnerWindowController:
var SetDidChange : Bool = false
class RunnerWindowController{
var startvalue : CGFloat = 0
var timer : NSTimer?
func initTimer() {
self.timer = NSTimer.scheduledTimerWithTimeInterval(1, target:
self, selector: #selector(refresh), userInfo: nil, repeats: true)
}
@objc func refresh() {
if (SetDidChange == true) {
print("Refresh done")
runnerLayer.removeAllAnimations()
animateRunner()
SetDidChange = false
}
}
....
}
RunnerPrefController:
override func viewDidAppear() {
SetDidChange = false
}
@IBAction func btnSenden(sender: AnyObject) {
SetDidChange = true
}
【问题讨论】:
-
您的
RunnerWindowC属性是一个隐式展开的可选属性,当您调用该函数时是nil(应该使用单个(),而不是双精度) - 请参阅 this Q&A了解更多关于如何安全处理选项的信息。