Это как KVO для любых других изменений по умолчанию.
Предположим, что ваше приложение имеет CFBundleIdentifier
из your.company.app , и вы хотите установить значение KVO по умолчанию с помощью клавиши foo .
Настройка KVO foo примерно так:
[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 для приложения MacOS, KVOing из AppDelegate)