Info.plist の LSUIElement
を変更せずに Dock のアイコン表示を切り替える方法。
LSUIElement=YES
にして基本は非表示にしておき、設定を見て切り替える。
- (void)applicationWillFinishLaunching:(NSNotification *)notification
{
//show in dock
if ([[NSUserDefaults standardUserDefaults]boolForKey:@"showDockIcon"]) {
ProcessSerialNumber psn = { 0, kCurrentProcess };
TransformProcessType(&psn, kProcessTransformToForegroundApplication);
}
}
ちなみに逆の挙動も可能。つまり LSUIElement=NO
にしておいて、Dock に表示させない場合に kProcessTransformToUIElementApplication
で呼ぶ。これでも機能はするが、一瞬 Dock に現れかけて消えるのでやめておいた方がよい。