Думаю всем очевиден факт, что когда приложение в macOS запущено, оно отображает иконку в доке. Иногда нам это не требуется, к примеру, если подразумевается, что приложение будет работать в фоне, и нет нужды лишний раз напоминать пользователю о его существовании.
В общем случае для этого даже не требуется писать код: достаточно выставить соотвествующий флаг в Info.plist.
<key>LSUIElement</key>
<true/>
По-человечески этот ключ называется “Application is agent (UIElement)” и собственно он переведет приложение в режим агента, в котором иконка в доке показываться не будет.
Если же поведение твоего приложения ещё более специфично и есть желание управлять отображением иконки в доке в процессе работы, то можно воспользоваться методом setActivationPolicy
класса NSApplication
.
Чтобы скрыть иконку (по сути этот метод аналогичен выставлению флага в Info.plist):
NSApp.setActivationPolicy(.accessory)
Вернуть назад приложение в нормальный режим:
NSApp.setActivationPolicy(.regular)