Сообщение Objective C было отправлено освобожденному объекту NSLimitedMenuViewWindow (зомби) - PullRequest
0 голосов
/ 19 марта 2019

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
        {
            ...
        }
    }
}

Именно NSSavePanel вызывает проблему при нажатии кнопки расширения (изображение 1) (опять же: это работает до повторного подключения)

enter image description here

Итак, я отправился на охоту на зомби и нашел одного:

enter image description here

Оскорбительный код является частью AppKit. Кажется, уведомление отправлено в часть меню, которая больше не существует. Как мне исправить это?

...