Swift:来自自定义类的函数调用引发异常



我有一个用于NSButton的cusom类。按下该按钮可通过AppDelegate().startTask()调用主AppDelegate.swift中的一个函数,该函数会触发NSTask并通过AppDelegate.swift的IBOutlet为NSProgressIndicator设置动画。

@IBOutlet weak var mySpinner: NSProgressIndicator!
func startTask() -> Void
{
    mySpinner.startAnimation(true)
    ...
}

它在mySpinner.startAnimation(true):上抛出一个错误

致命错误:展开可选值时意外发现nil(lldb)

我错过了什么?当从自定义类调用时,AppDelegate是否无权访问此IBOutlet?从AppDelegate中调用此函数效果良好。

问题

有了这条线

AppDelegate().startTask()

您正在创建一个新的AppDelegate。在这个新的实例中,mySpinner没有被填充,并且该行确实使崩溃

mySpinner.startAnimation(true)

因为CCD_ 5是CCD_。

解决方案

您应该检索已经创建的AppDelegate实例

let appDelegate = NSApplication.sharedApplication().delegate as! AppDelegate
appDelegate.startTask()

最新更新