Swift 4.2,MacOS。
我正在使用的MacOS应用有时会因EXC_BAD_ACCESS崩溃。 有时它不会崩溃,但是会向随机对象(每次都不同的对象实例)发送一个“无法识别的选择器”。
该应用程序是连接到服务器的客户端。如果服务器已启动,则没有问题。终止服务器并将其与客户端重新连接会触发此问题。
我正在使用NSSavePanel。
@IBAction func exportStuff(_ sender: NSButton)
{
...
let savePanel = NSSavePanel()
savePanel.allowedFileTypes = ["txt"]
savePanel.directoryURL = URL(fileURLWithPath: NSHomeDirectory()).appendingPathComponent("stuff export")
savePanel.beginSheetModal(for: window!)
{
if $0 == .OK
{
...
}
}
}
按下扩展按钮(图像1)时,是NSSavePanel引起问题(再次:在重新连接之前,此方法有效)
因此,我继续寻找僵尸,发现了一个:
违规代码是AppKit的一部分。似乎通知已发送到不再存在的菜单部分。 我该如何解决?