我正在尝试将附件视图添加到带有按钮的 NSAlert 中。当您单击警报中的按钮时,它应该将一些文本打印到控制台。
问题是当我不将包含附件视图的 NSViewController 的变量的名称写入 NSAlert 的完成处理程序时,应用程序崩溃。我不明白它为什么会崩溃,我得到的唯一错误是:
EXC_BAD_ACCESS(code=1, address=0x40dedeadbec0)
我不明白。我什至不使用该变量,但是当它存在时,一切正常。如果我评论它,应用程序就会崩溃。
我在一个更大的项目中遇到了这个错误,我费了很大劲才发现这是问题所在。所以我决定在一个新的空项目中测试它,它也是一样的。
这是我的 AppDelegate 文件:
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var window: NSWindow!
func applicationDidFinishLaunching(_ aNotification: Notification) {
// Insert code here to initialize your application
}
func applicationWillTerminate(_ aNotification: Notification) {
// Insert code here to tear down your application
}
@IBAction func add(_ sender: NSObject) {
let a = NSAlert()
let cont = Test()
a.accessoryView = cont.view
a.beginSheetModal(for: window, completionHandler: {(modalResponse: NSModalResponse) -> Void in
//When you comment the line underneath, it doesn't work anymore, why ?
cont
})
}
}
这是我的测试类文件:import Cocoa
class Test: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
}
@IBAction func some(sender: NSButton) {
print("something")
}
}
有谁知道它为什么会这样以及如何解决它?