標籤: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