【发布时间】:2023-03-15 06:25:01
【问题描述】:
我无法让 IOS (objective-c) KVO 为 int 类型的键工作。
我的班级声明了一个 int 类型的属性 sampleValue。由于 int 不会自动实现 KVO 功能,我已经重写了 automaticallyNotifiesObserversforKey 方法,如下所示:
+ (BOOL)automaticallyNotifiesObserversForKey:(NSString *)theKey {
BOOL automatic = NO;
if ([theKey isEqualToString:@"sampleValue"]) {
automatic = NO;
} else {
automatic=[super automaticallyNotifiesObserversForKey:theKey];
}
return automatic;
}
该方法的调用方式与我预期的一样。我还为 sampleValue 属性实现了一个 setter 方法,如下所示:
- (void) setSampleValue:(int)newSampleValue
{
[self willChangeValueForKey:@"sampleValue"];
sampleValue = newSampleValue;
[self didChangeValueForKey:@"sampleValue"];
}
在观察者类中设置观察者是这样完成的(dc是被观察对象的实例):
[dc addObserver:self forKeyPath:@"sampleValue" options:NSKeyValueObservingOptionNew context:NULL];
但是,当 sampleValue 更新时,不会向我的观察者对象发送通知。更新另一个 NSDate 类型的属性绝对没问题。
谁能帮我弄清楚我做错了什么或者我应该做些什么来完成这项工作。
最好的问候 托莫
【问题讨论】: