iOS默認不支持對數(shù)組的KVO,因為普通方式監(jiān)聽的對象的地址的變化,而數(shù)組地址不變,而是里面的值發(fā)生了改變。
第二種方式:
要知道KVO的底層實現(xiàn)原理是動態(tài)的添加中間類,并且在監(jiān)聽的屬性設(shè)置(set)方法中插入了willChangeValueForKey和didChangeValueForKey方法,那么我們可以手動調(diào)用這兩個方法,以發(fā)出屬性變化通知。這樣實現(xiàn)起來就很簡單。
//要監(jiān)聽的數(shù)組,不可變數(shù)組也一樣
@property (nonatomic, copy) NSMutableArray *array;
//在想要發(fā)出array變化的地方調(diào)用
[self willChangeValueForKey:@"array"];
//這邊模擬元素內(nèi)容變化,實際上調(diào)用了`willChangeValueForKey`和`didChangeValueForKey`方法不管數(shù)組內(nèi)容有沒有變化都會告知監(jiān)聽者
[self..array addObject:@"piaojin"];//可以增加,修改,刪除,只要記得調(diào)用`willChangeValueForKey`和`didChangeValueForKey`方法
[self didChangeValueForKey:@"array"];
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。