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:didChangeValueForKey:メッセージを送信する必要はありません。

于 2013-03-07T13:47:09.497 に答える