1

我正在尝试将附件视图添加到带有按钮的 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")
}

}

有谁知道它为什么会这样以及如何解决它?

4

0 回答 0