iOS KVO監聽readonly屬性

2021-09-24 08:33:58 字數 541 閱讀 8928

本文不是技術向的文章,僅記錄小弟我在開發中遇到的各種坑...

先宣告乙個唯讀屬性name@property (nonatomic, strong, readonly) nsstring *name;

這樣系統只會生成name的get方法而不會生成name的set方法

簡單來說kvo的實現原理是重寫了屬性的set方法,在set方法中發出通知。 而readonly屬性並沒有set方法,所以kvo會失效。

/// kvo實現原理

- (void)setname:(nsstring *)name

複製**

用kvo監聽readonly屬性,需要在屬性改變的前後手動加上下面兩行**

[self willchangevalueforkey:@"name"];

_name = @"tom";

[self didchangevalueforkey:@"name"];

複製**

關於kvo具體的實現原理可以看這篇文章

iOS KVO 監聽陣列變化

首先,陣列不能直接使用kvo使用監聽。當我們想要使用kvo監聽陣列,我們需要進行一下幾步。1.kvo不能監聽uiviewcontroller中的陣列。我們需要先建立乙個模型,將陣列新增值模型中。inte ce selectedsarr nsobject property nonatomic,stro...

iOS KVO概述(剛剛)

面試中經常會被問到 什麼是kvo?這個問題既然出現概率這麼大,那麼我們就來詳細講一講到底什麼是kvo。下次再有面試官問你的時候,你就可以娓娓道來,以彰顯高逼格 問 什麼是kvo?答 kvo是key value observing的縮寫。它提供一種機制,當指定的物件的屬性被修改後,則物件就會接受到通知...

iOS KVO 實現原理

kvo 屬性觀察者 是觀察者模式的一種具體實現,主要通過觀察物件屬性值的變化,觸發對應的方法 下面學習下 kvo 的具體實現 和 底層實現原理 原生觀察者實現 1 為 狗 物件d新增乙個觀察者為自己,同時監聽物件d age年齡屬性的改變 dog d dog new p addobserver sel...