Key Value Observing (KVO)を使用して、NSUserDefaults を直接観察できます。次のように通知にサインアップします。
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults addObserver:self forKeyPath:@"YourUserDefaultsKey" options:0 context:NULL];
@"YourUserDefaultsKey"
次にこれを実装すると、値が変更されるたびに呼び出されます。
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if (object == userDefaults && [keyPath isEqualToString:@"YourUserDefaultsKey"]) {
int intValue = [userDefaults intValueForKey:@"YourUserDefaultsKey"];
// Do whatever you need to do with new intValue
}
}
最後に、必要に応じてオブザーバーとしての登録を解除することを忘れないでください (例-dealloc
: ):
- (void)dealloc
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults removeObserver:self forKeyPath:@"YourUserDefaultsKey"];
}
Cocoa Bindings 自体は KVO に基づいていることに注意してください。
免責事項: この回答のすべてのコードをブラウザーに入力しました。正しいはずですが、1 つまたは 2 つのタイプミスがある可能性があります。