KVO不适用于类别

时间:2013-03-07 13:43:19

标签: ios objective-c key-value-observing

我尝试使用类别向类添加属性。属性访问器看起来像:

- (NSArray *)thumbnails {
    return objc_getAssociatedObject(self, kThumbnails);
}

- (void)setThumbnails:(NSArray *)thumbnails {
    [self willChangeValueForKey:@keypath(self.thumbnails)];
    objc_setAssociatedObject(self, kThumbnails, thumbnails, OBJC_ASSOCIATION_RETAIN);
    [self didChangeValueForKey:@keypath(self.thumbnails)];
}

不幸的是没有触发通知。甚至可以将KVO兼容属性添加到类别中吗?

1 个答案:

答案 0 :(得分:4)

KVO绝对可以使用类别中的访问方法。

发布的代码与密钥@"thumbnails"符合KVO标准。您甚至不必发送willChangeValueForKey:didChangeValueForKey:消息。