0
我有一個存儲在數組中的NewsItem對象的數據源的UITableView。在我的NewsItem對象中,我有一個名爲'imageState'的BOOL,我想跟蹤它。我想要使用KVO,以便當這個imageState的值發生變化時,通知具有NewsItem數組的UIViewController,然後執行一些操作(即:重新加載單元格或其他)。我該如何做這樣的事情?它首先是可行的嗎?數據源中的KVO問題
我有一個存儲在數組中的NewsItem對象的數據源的UITableView。在我的NewsItem對象中,我有一個名爲'imageState'的BOOL,我想跟蹤它。我想要使用KVO,以便當這個imageState的值發生變化時,通知具有NewsItem數組的UIViewController,然後執行一些操作(即:重新加載單元格或其他)。我該如何做這樣的事情?它首先是可行的嗎?數據源中的KVO問題
可以在TableViewController添加觀察者,這樣
[self addObserver:newsItemObject forKeyPath:@"imageState" options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) context:nil];
將observering的對象,當它改變它會調用這個方法,你應該實現以下這種方法:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"%@ \n %@ \n %@ \n ",keyPath,object,change);
// do your things
}
如果類NewsItem是你的類,我認爲它是更好的使用委託或通知。 KVO不是一個更好的方法。
爲什麼KVO不是一個好選擇? – adit
@adit我認爲KVO更好地觀察標準庫中或無法修改的類中的var。 –