NSEvent.addLocalMonitorForEvents

时间:2018-06-09 15:48:28

标签: swift memory-leaks

问候:仪器告诉我,我在viewDidLoad中的两个addLocalMonitor调用中有内存泄漏(3字节a-piece)。我很高兴看到我的错误以及为什么这可能(可能)泄漏。非常感谢任何帮助!

环境:

  • 斯威夫特: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 :(得分:0)

对于任何偶然发现这种情况的人来说,提出的泄漏通常是其他地方的症状,在其他地方。事实证明我错过了埋藏在其他地方封闭的[无主自我]。一旦得到纠正,这个"泄漏"走了。针 - 遇见干草堆。

底线:上面的语法不是错误的。