这可能听起来很疯狂,但我需要更新OS X用户默认值(专门针对Dock.app),然后让应用程序以某种方式识别已经进行了更改并做出相应的响应。
我知道这可能以某种方式,因为在“系统偏好设置”中更改设置后,它会立即生效。不幸的是,手动defaults write
没有这种情况。
这是我到目前为止所尝试的:
Dock
进程。$ defaults write com.apple.dock launchanim -bool false
[[NSDistributedNotificationCenter defaultCenter] postNotificationName:NSUserDefaultsDidChangeNotification object:nil];
不幸的是,这个通知似乎没有效果。恢复Dock后,无法识别更改(实际上,它也无法在“系统偏好设置”中识别)。
在这种情况下我是否可以使用其他(可能是未记录的)通知名称?或者用其他方式表明这一点?
请注意,在这种情况下,仅杀死Dock 不是选项。
如果我真的对此疯狂,我可能会使用一些代码注入方法(mach-inject?)来强制Dock调用[[NSUserDefaults standardUserDefaults] synchronize]
,但我更感兴趣的是更容易和更少侵入方法首先,如果它们存在。
答案 0 :(得分:0)
好的,这并没有完全回答原始问题(导致任何应用响应用户默认更改),但它是什么我本来想做的,希望它对其他人也有用。
基本上,系统上有一个私有API可以即时更新Dock首选项。这由Dock.prefpane使用。由于@Ssswift在评论中指出了一个更具体的问题,要求提供相同类型的信息,我在那里发布了完整的答案。