Утечка памяти для NSEvent.addLocalMonitorForEvents - PullRequest
0 голосов
/ 09 июня 2018

Привет: Instruments сообщает мне, что у меня есть утечки памяти (по 3 байта) из двух вызовов addLocalMonitor в viewDidLoad.Я счастлив, что мне показали мою ошибку (и) и почему это (возможно) протекает.Любая помощь приветствуется!

Среда:

  • Swift: 4
  • Xcode: 9,4
  • Цель развертывания: 10,11

Код

override func keyDown(with theEvent: NSEvent) {
        nextResponder?.keyDown(with: theEvent)

        let hasCommand = theEvent.modifierFlags.contains(.command)

        switch theEvent.charactersIgnoringModifiers! {
        case "q" where hasCommand == true:  // Capture "Command-Q"
            let app = NSApplication.shared
            app.terminate(NSApplication.shared.delegate as! AppDelegate)
            break
        default:
            break
        }
    }


override func viewDidLoad() {
        super.viewDidLoad()

        NSEvent.addLocalMonitorForEvents(matching: .keyDown) { [unowned self] (theEvent) -> NSEvent? in
            self.keyDown(with: theEvent)
            return theEvent
        }

        NSEvent.addLocalMonitorForEvents(matching: .flagsChanged) { [unowned self] (theEvent) -> NSEvent? in
            self.flagsChanged(with: theEvent)
            return theEvent
        }
}

1 Ответ

0 голосов
/ 10 июня 2018

Для любого, кто наталкивается на это, как обычно, текущая утечка обычно является симптомом чего-то еще, где-то еще.Оказывается, я пропустил [неизвестное Я], похороненное в закрытом помещении в другом месте.Как только это было исправлено, эта «утечка» прошла.Игла - соответствует стогу сена.

Итог: приведенный выше синтаксис не является ошибкой.

...