3

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

- (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 的属性添加到类别中吗?

4

1 回答 1

4

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

发布的代码与密钥的 KVO 兼容@"thumbnails"。您甚至不必发送willChangeValueForKey:anddidChangeValueForKey:消息。

于 2013-03-07T13:47:09.497 回答