已将Objective-C消息发送到已释放的“ NSLimitedMenuViewWindow”对象(僵尸)

时间:2019-03-19 17:44:04

标签: swift macos exc-bad-access nszombie

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引起问题(再次:在重新连接之前,此方法有效)

enter image description here

因此,我继续寻找僵尸,发现了一个:

enter image description here

违规代码是AppKit的一部分。似乎通知已发送到不再存在的菜单部分。 我该如何解决?

0 个答案:

没有答案