Я пытаюсь создать простое приложение MacOS Cocoa, используя NSStatusItem
для создания интерактивного значка в строке состояния системы. Однако, когда я запускаю свое приложение, я получаю это предупреждение, и значок не отображается:
2020-03-03 14:43:11.564 Mocha_bug_example[936:39572] CGSGetActiveMenuBarDrawingStyle((CGSConnectionID)[NSApp contextID], &sCachedMenuBarDrawingStyle) returned error 268435459 on line 46 in NSStatusBarMenuBarDrawingStyle _NSStatusBarGetCachedMenuBarDrawingStyle(void)
Вот минимальный воспроизводимый пример для моего приложения:
#import <AppKit/AppKit.h>
NSStatusItem* statusItem;
int main (int argc, char* argv[]) {
statusItem = [NSStatusBar.systemStatusBar statusItemWithLength: -1];
statusItem.button.title = @"foobar";
statusItem.visible = YES;
[NSApplication.sharedApplication run];
return 0;
}
Я скомпилировал и запустил пример следующим образом:
MacBook-Air-5:Mocha ericreed$ clang -o Mocha_bug_example -framework AppKit -fobjc-arc Mocha_bug_example.m
MacBook-Air-5:Mocha ericreed$ ./Mocha_bug_example
2020-03-03 14:43:11.564 Mocha_bug_example[936:39572] CGSGetActiveMenuBarDrawingStyle((CGSConnectionID)[NSApp contextID], &sCachedMenuBarDrawingStyle) returned error 268435459 on line 46 in NSStatusBarMenuBarDrawingStyle _NSStatusBarGetCachedMenuBarDrawingStyle(void)
[Application hung until I pressed Ctrl+C]
^C
MacBook-Air-5:Mocha ericreed$
Примечание: отключение автоматического подсчета ссылок и добавление [statusItem release];
после вызова run
в соответствии с предложенным подобным вопросом не дало видимой разницы.