iOS基礎 KVC和KVO

來源:互聯網
上載者:User

標籤:blog   io   os   使用   sp   for   on   資料   div   

瘋狂IOS講義這本書之前一直一直覺得沒什麼用,看了做不出像樣的程式出來,但是經過幾天的學習發現,沒有一定的ios基礎,做的程式永遠都是在模仿他人的程式,把他人的代碼複製 粘貼。。。為什麼能夠實現?原理 是什嗎?不懂。。。所以 必須懂原理,為什嗎?

接下來就今天所學習的內容做一個小結;

首先介紹一下KVO和KVC,一個是索引值編碼一個是索引值監聽,我第一次聽這個也是很困惑,這是個神馬意思?索引值是啥?監聽 還懂一點 。。。

我們都知道之前我們都是通過setter和getter來設定和修改對象的屬性,KVC和這種差不多,但是KVC允許字串形式簡介操作對象的屬性,全稱:Key Value Coding

,KVC有2個方法:第一個是:setvalue forKey:   為指定的屬性設定值    第二個是   valueForKey: 擷取指定屬性的值 ,對應setter getter 

其中對於 setvalue forKey:方法,其底層執行機制如下:

1. 訪問setter

2. 成員變數 _name

3. 成員變數 name

4 valueforUndefinedKey(該方法引發一個異常,導致程式結束)

當使用KVC方式操作的時候,某些屬性可能不一定存在,那麼就是自動調用 setvalue :forundefinedKey 和 valueForundefinedKey 方法 ,但是這2個方法預設的引發異常,這時候我們需要重寫這2個方法,

-(void) setValue: (id)  vlaue forindefineKey: (id) key{NSLog(@"not cunzai",key);}

 索引值監聽KVO簡單說就是用來更新資料,ios應用程式通常會把組件分為 資料模型組件和視圖組件,就是一個是存在內部資料的,一個是使用者看到的,一旦資料模型組件發生了改變,那麼就需要KVO監聽然後對視圖的組件更新!

主要分為三個步驟:

1.註冊

2.重寫  observeValueForKeyPath :ofObject:change:context

3.刪除監聽

iOS基礎 KVC和KVO

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.