Мое приложение помещает NSStatusItem в строку меню OS X. В какой-то момент я хочу удалить значок строки меню из системного NSStatusBar. (Я хочу по-прежнему сохранять NSStatusItem на этом этапе и отправлять ему сообщения... просто не показывать его.)
Я использую этот метод для удаления элемента состояния из строки состояния:
[[NSStatusBar systemStatusBar] removeStatusItem:statusItem];
Я хочу позже проверить, отображается ли в настоящее время statusItem в строке состояния. Я бы предпочел не отслеживать это с помощью логического значения или т.д.
Я думал, что эта проверка будет работать:
if ([[NSStatusBar systemStatusBar] isEqualTo:[statusItem statusBar]])
{
NSLog(@"statusItem's bar == system bar, before");
}
NSLog(@"removing from systemStatusBar");
[[NSStatusBar systemStatusBar] removeStatusItem:statusItem];
if ([[NSStatusBar systemStatusBar] isEqualTo:[statusItem statusBar]])
{
NSLog(@"statusItem's bar == system bar, after removal");
}
Это выводит:
statusItem's bar == system bar, before removal
removing from systemStatusBar
statusItem's bar == system bar, after removal
Таким образом, в строке состояния statusItem нет видимых изменений.
справочник по классу NSStatusBar не содержит применимых методов.
Есть ли способ проверить, находится ли определенный NSStatusItem в главной системной панели?