我有一个用于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()