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
의 예) : 자체가 KVO를 기반으로 코코아 바인딩 것을
- (void)dealloc
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults removeObserver:self forKeyPath:@"YourUserDefaultsKey"];
}
참고.
면책 사항 :이 답변의 모든 코드는 브라우저에 입력했습니다. 정확해야하지만 오타 또는 두 개가있을 수 있습니다.
더 많은 정보를 제공 할 수 있다면 –