2013-03-07 78 views
3

我嘗試使用類別將屬性添加到類。房產訪問者看起來像這樣:KVO不適用於類別

- (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兼容屬性添加到類別中?

+0

顯示註冊觀察者並處理通知的代碼。 – 2013-03-07 13:47:36

+0

觀察者註冊的那個代碼是問題。它在通知已被解僱後才進行登記。 – zlajo 2013-03-07 14:19:10

回答

4

KVO絕對可以用類別中的訪問器方法。

發佈的代碼與密鑰@"thumbnails"的KVO兼容。您甚至不必發送消息willChangeValueForKey:didChangeValueForKey: