Я использую настраиваемый элемент с меню в строке состояния системы для управления некоторыми функциями в моем приложении. Вот мой код:Нераспознанный селектор в OS X 10.11
import Foundation
class StatusBarMenuController {
var statusItem: NSStatusItem
init() {
self.statusItem = NSStatusBar.system().statusItem(withLength: NSSquareStatusItemLength)
statusItem.image = NSImage(named: "StatusBarButtonImage")
let menu = NSMenu()
let isListeningMenuItem = NSMenuItem(title: "Listening", action: #selector(StatusBarMenuController.isListeningAction(_:)), keyEquivalent: "")
isListeningMenuItem.isAlternate = true
isListeningMenuItem.target = self
isListeningMenuItem.state = NSOnState
menu.addItem(isListeningMenuItem)
statusItem.menu = menu
}
@objc func isListeningAction(_ item: NSMenuItem) {
if (item.state == NSOffState) {
item.state = NSOnState
// Handle switch-on action...
}
else {
item.state = NSOffState
// Handle switch-off action...
}
}
}
Этот класс конкретизируется в applicationDidFinishLaunching
методе AppDelegate
.
Все работает нормально в последней версии macOS (10.12). Я пробовал его на нескольких компьютерах, но при попытке запустить приложение на машине со старой версией os, например. OS X 10.11, он мгновенно падает.
Краш детали:
Application Specific Информация: Непризнанный селектор - [MyAppName.StatusBarMenuController methodForSelector:]
прерывания() называется
Любые идеи, почему это происходит?