我正在通过NSUserDefaults
类更改 .GlobalPreferences NSUserSubstitutions 首选项(通过PyObjC,但除此之外)。
此首选项控制OS X的文本替换功能(例如,可以用“©”代替“(c)”)。
更改首选项后,我希望它立即应用于所有正在运行的应用程序。通过“系统偏好设置”进行更改时,会立即应用。我应该如何通知其他应用程序立即应用它?
答案 0 :(得分:2)
使用以下代码:
[[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(gotIt:) name:nil object:nil];
当文本替换首选项发生变化时,我能够检测到系统偏好设置应用程序发布了名为NSUserReplacementItemsEnabledChanged
的通知。
知道了,您现在可以在更改首选项后发布足够的通知,以便了解所有打开的应用程序:
[[NSDistributedNotificationCenter defaultCenter] postNotificationName:@"NSUserReplacementItemsEnabledChanged" object:self];
请注意,NSUserReplacementItemsEnabledChanged
未在任何地方记录,因此此行为可能随时更改。