对于我的 Mac OSX 应用程序,我有一个功能可以在单击按钮时删除屏幕右上角的系统时钟。控制显示哪些系统菜单的首选项(包括系统时钟)存储在 ~/Library/Preferences/com.apple.systemuiserver.plist 中。我能够更新该文件中的相关首选项以删除系统时钟。但是,需要重新启动 SystemUIServer 应用程序,以便重新加载新的首选项并删除时钟。这是我用来重新启动 SystemUIServer 的代码。
NSTask *killSystemUITask = [[NSTask alloc] init];
NSMutableArray *args = [NSMutableArray array];
[args addObject:@"SystemUIServer"];
[killSystemUITask setLaunchPath:@"/usr/bin/killall"];
[killSystemUITask setArguments:args];
[killSystemUITask launch];
当 SystemUIServer 被杀死时,OSX 会自动重新启动它。上面的代码有效,但系统时钟的删除并不像我想要的那样干净。整个系统栏被删除一秒钟。谁能想到将首选项重新加载到 SystemUIServer 的更好方法?理想情况下,我希望系统时钟的删除与系统偏好设置应用程序的日期和时间偏好中的时钟显示功能一样干净。