【问题标题】:KVO not working for CategoriesKVO 不适用于类别
【发布时间】:2013-03-07 13:43:18
【问题描述】:

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

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

【问题讨论】:

  • 显示注册观察者和处理通知的代码。
  • 观察者注册的代码是问题所在。它是在通知被触发后注册的。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    相关资源
    最近更新 更多