gpt4 book ai didi

objective-c - 如何在 Objective-C 应用程序中观察 NSUserDefaults 的命令行更改?

转载 作者:行者123 更新时间:2023-12-03 17:37:40 25 4
gpt4 key购买 nike

我希望我的 Cocoa Objective-C 应用程序能够观察 NSUserDefaults 更改,这些更改是命令行调用默认写入的结果,例如:

defaults write <domain> <key> -array val1 val2 val3

我已经列举了许多有关观察 NSUserDefaults 更改的示例。看起来通知已经消失了,因为它们只在同一进程中工作。为了观察命令行的变化,我认为需要 KVO。

在我见过的 KVO 示例中,我不清楚如何将“defaults write ...”命令行调用中使用的“domain”和“key”参数关联到所使用的 KVO 逻辑的编程结构观察这些变化。

如果有一个简洁、具体的可运行示例,其中包含代码和相关的“defaults write ...”命令,我们将不胜感激!

最佳答案

这就像 KVO 对默认值进行任何其他更改一样。

假设您的应用的 CFBundleIdentifieryour.company.app,并且您希望使用键 foo KVO 一个默认值。

设置 foo 的 KVO,如下所示:

[NSUserDefaults.standardUserDefaults addObserver:self forKeyPath:@"foo" options:NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew context:nil];

并且在同一个类中有一个KVO回调方法:

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context
{
// just for debugging:
NSLog(@"KVO: keyPath = '%@', change = %@", keyPath, change);
}

构建并运行应用程序;然后,在命令行上发出:

defaults write your.company.app foo "bar"

应该导致调用 KVO 回调方法(使用 macOS 13、XCode9、沙盒默认 macOS Cocoa 应用模板、来自 AppDelegate 的 KVO 进行测试)

关于objective-c - 如何在 Objective-C 应用程序中观察 NSUserDefaults 的命令行更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54374090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com