iOS KVO 監聽陣列變化

2021-10-24 10:10:17 字數 802 閱讀 1515

首先,陣列不能直接使用kvo使用監聽。當我們想要使用kvo監聽陣列,我們需要進行一下幾步。

1.kvo不能監聽uiviewcontroller中的陣列。我們需要先建立乙個模型,將陣列新增值模型中。

@inte***ce selectedsarr : nsobject

@property (nonatomic, strong) nsmutablearray *selecteds;///《選中的選項集合

@end

2.建立觀察者以及觀察者物件

[self.selectedsarr addobserver:self forkeypath:@"selecteds" options:nskeyvalueobservingoptionnew context:nil];

3.處理key的變化

這裡,很重要,當向模型中的可變陣列新增新成員時,不能直接用[self.selectedsarr.selecteds addobject:]方法。而使用該用下面的方法

[[self.selectedsarr mutablearrayvalueforkey:@"selecteds"] addobject:]];

4.在下面的方法新增監聽到變化後要執行的語句

- (void)observevalueforkeypath:(nsstring *)keypath ofobject:(id)object change:(nsdictionary*)change context:(void *)context

5.移除監聽

[self removeobserver:self forkeypath:@"selecteds"];

iOS KVO監聽readonly屬性

本文不是技術向的文章,僅記錄小弟我在開發中遇到的各種坑.先宣告乙個唯讀屬性name property nonatomic,strong,readonly nsstring name 這樣系統只會生成name的get方法而不會生成name的set方法 簡單來說kvo的實現原理是重寫了屬性的set方法,...

KVO監聽陣列變化

1 某乙個類.h檔案 新建乙個model類 裡面有待監聽selectarray 待監聽陣列模型類 inte ce selectarraymodel nsobject 勾選儲存陣列 property nonatomic,strong nsmutablearray selectarray end 2 某...

vue監聽陣列變化

1 觸發更新檢視 2function updateview 56 重新定義陣列原型 7 const oldarrayproperty array.prototype8 建立新物件,原型指向 oldarrayproperty 再擴充套件新的方法不會影響原型 9 const arrproto objec...