(十四)手動(dòng)觸發(fā)KVO

前言

講真,這個(gè)KVO我沒(méi)怎么用過(guò),所有出發(fā)點(diǎn)只是學(xué)習(xí),并沒(méi)有滿足什么需求的強(qiáng)烈愿望,不過(guò)這個(gè)也是OC重要的一部分,還是得看看。

KVO觸發(fā)的一些理解

首先呢,apple提供給我們的是自動(dòng)的觸發(fā)方法。手動(dòng)觸發(fā)呢也是一定程度上對(duì)自動(dòng)觸發(fā)的模擬。那么我們將觸發(fā)的方法放在何處才能達(dá)到目的呢,這個(gè)應(yīng)該稍微分析下。KVO說(shuō)白了我認(rèn)為是一種KVC的處理方法,根本上來(lái)說(shuō)還是作用于屬性的,讓我們來(lái)及時(shí)發(fā)現(xiàn)屬性的變化。那么我們的手動(dòng)觸發(fā)方法應(yīng)該放在屬性改變這一塊,對(duì)于屬性的改變,apple提供了一個(gè)現(xiàn)成的方法-set,所以我們的手動(dòng)觸發(fā)方法就應(yīng)該放在要作用的屬性的set方法里。(完美分析,恩,都是假的)

KVO觸發(fā)我們需要用到什么

首先是兩個(gè)方法

- (void)willChangeValueForKey:(NSString *)key
- (void)didChangeValueForKey:(NSString *)key

這兩個(gè)方法就是字面上意思,在set之前調(diào)用willChangeValueForKey,在set之后調(diào)用didChangeValueForKey,因此我們?nèi)绻獙?shí)現(xiàn)KVO手動(dòng)調(diào)用,也就實(shí)在set方法中,調(diào)用上述兩個(gè)方法。

怎么手動(dòng)出發(fā)這個(gè)方法

+ (BOOL)automaticallyNotifiesObserversOfName
{
    return NO;
}
- (void)setName:(NSString *)name
{
    if(_name == name){
        return;
    }
    [self willChangeValueForKey:@"name"];
    _name = name;
    [self didChangeValueForKey:@"name"];
}

結(jié)果

2017-07-14 13:28:09.614 textview[16786:1498912] have a new name 飛度
2017-07-14 13:28:09.614 textview[16786:1498912] have a new name 思域
2017-07-14 13:28:09.614 textview[16786:1498912] have a new name 手扶拖拉機(jī)

首先呢我們先關(guān)閉自動(dòng)調(diào)用,一旦調(diào)用了,我們的KVO就是失效啦。
然后我們重寫(xiě)了set方法,于是就有了接下來(lái)的打印,所以,我宣布,成功啦。
完結(jié)撒花。
【整理來(lái)自于手動(dòng)觸發(fā)KVO

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 《招聘一個(gè)靠譜的 iOS》—參考答案(下) 說(shuō)明:面試題來(lái)源是微博@我就叫Sunny怎么了的這篇博文:《招聘一個(gè)靠...
    韓發(fā)發(fā)吖閱讀 1,638評(píng)論 0 8
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 記2017.7.29 晴 于小屋 忠于內(nèi)心,把喜歡的事情做到極致!?? 周六的早晨,從永寧出發(fā),穿過(guò)銀川...
    會(huì)好好生活的婷婷閱讀 283評(píng)論 2 2
  • 上帝擲骰子嗎 量子物理史話 - 曹天元
    lesliefang閱讀 428評(píng)論 0 0
  • 大多數(shù)人的痛苦都是因?yàn)榛糜X(jué)。 絕大多數(shù)從高處跳下來(lái)自殺的人就是因?yàn)楦杏X(jué)“這世界跟我半毛錢的關(guān)系都沒(méi)有”,以至于邁出...
    劉金玉閱讀 1,457評(píng)論 2 4

友情鏈接更多精彩內(nèi)容