У меня проблемы с тем, чтобы IOS (target-c) KVO работал для ключа типа int.
Мой класс объявляет свойство sampleValue типа int. Поскольку int автоматически не реализует функциональность KVO, я переопределил метод automaticNotifiesObserversforKey следующим образом:
+ (BOOL)automaticallyNotifiesObserversForKey:(NSString *)theKey {
BOOL automatic = NO;
if ([theKey isEqualToString:@"sampleValue"]) {
automatic = NO;
} else {
automatic=[super automaticallyNotifiesObserversForKey:theKey];
}
return automatic;
}
Метод вызывается так, как я и ожидал. Я также реализовал метод установки для свойства sampleValue следующим образом:
- (void) setSampleValue:(int)newSampleValue
{
[self willChangeValueForKey:@"sampleValue"];
sampleValue = newSampleValue;
[self didChangeValueForKey:@"sampleValue"];
}
Настройка наблюдателя в классе наблюдателя выполняется следующим образом (dc является экземпляром наблюдаемого объекта):
[dc addObserver:self forKeyPath:@"sampleValue" options:NSKeyValueObservingOptionNew context:NULL];
Однако, когда sampleValue обновляется, уведомление моему объекту-наблюдателю не отправляется. Обновление другого свойства типа NSDate работает абсолютно нормально.
Может ли кто-нибудь помочь мне понять, что я делаю неправильно или что я должен сделать, чтобы сделать эту работу.
С наилучшими пожеланиями
Том