成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iPhone程序開發 KVO/KVC實現機理分析

移動開發 iOS
本文介紹的是iPhone程序開發 KVO/KVC實現機理分析,很詳細為友們介紹了他們的機制原理,我們來看內容。

iPhone程序開發 KVO/KVC實現機理分析是本文要介紹的內容,不多說,直接進入話題。我們來看詳細內容。

Objective-C里面的Key-Value Observing (KVO)機制,非常不錯,可以很好的減少澆水代碼。關于KVO的學習,可以參考文章:《Key-Value Observing快速入門》:http://www.cocoadev.cn/Objective-C/Key-Value-Observing-Quick-Start-cn.asp

Key-Value Coding(KVC)實現分析

KVC運用了一個isa-swizzling技術。isa-swizzling就是類型混合指針機制。KVC主要通過isa-swizzling,來實現其內部查找定位的。isa指針,如其名稱所指,(就是is a kind of的意思),指向維護分發表的對象的類。該分發表實際上包含了指向實現類中的方法的指針,和其它數據。

比如說如下的一行KVC的代碼:

  1. [site setValue:@"sitename" forKey:@"name"]; 

就會被編譯器處理成:

  1. SEL sel = sel_get_uid ("setValue:forKey:");  
  2. IMP method = objc_msg_lookup (site->isa,sel);  
  3. method(site, sel, @"sitename", @"name"); 

首先介紹兩個基本概念:

(1)SEL數據類型:它是編譯器運行Objective-C里的方法的環境參數。

(2)IMP數據類型:他其實就是一個 編譯器內部實現時候的函數指針。當Objective-C編譯器去處理實現一個方法的時候,就會指向一個IMP對象,這個對象是C語言表述的類型(事實上,在Objective-C的編譯器處理的時候,基本上都是C語言的)。

關于如何找到實現函數的指針,可參考文章:《Objective-C如何避免動態綁定,而獲得方法地址》:http://www.cocoadev.cn/Objective-C/Get-method-address.asp

這下KVC內部的實現就很清楚的清楚了:一個對象在調用setValue的時候,(1)首先根據方法名找到運行方法的時候所需要的環境參數。(2)他會從自己isa指針結合環境參數,找到具體的方法實現的接口。(3)再直接查找得來的具體的方法實現。

Key-Value Observing(KVO)實現

在上面所介紹的KVC機制上加上KVO的自動觀察消息通知機制就水到渠成了。

當觀察者為一個對象的屬性進行了注冊,被觀察對象的isa指針被修改的時候,isa指針就會指向一個中間類,而不是真實的類。所以isa指針其實不需要指向實例對象真實的類。所以我們的程序***不要依賴于isa指針。在調用類的方法的時候,***要明確對象實例的類名。

熟悉KVO的朋友都知道,只有當我們調用KVC去訪問key值的時候KVO才會起作用。所以肯定確定的是,KVO是基于KVC實現的。其實看了上面我們的分析以后,關系KVO的架構的構思也就水到渠成了。

因為KVC的實現機制,可以很容易看到某個KVC操作的Key,而后也很容易的跟觀察者注冊表中的Key進行匹對。假如訪問的Key是被觀察的Key,那么我們在內部就可以很容易的到觀察者注冊表中去找到觀察者對象,而后給他發送消息。

小結:iPhone程序開發 KVO/KVC實現機理分析的內容介紹完了,希望本文對你有所幫助。

責任編輯:zhaolei 來源: 蘋果開發中文網
相關推薦

2014-04-23 14:40:06

iOS開發KVO內部實現

2011-08-19 10:13:05

iPhone開發

2011-08-05 13:49:53

iPhone 應用 開發

2011-08-16 15:48:37

iPhone開發抓圖程序

2011-08-17 16:12:20

iPhone應用程序

2011-07-26 11:13:15

iPhone PXL

2011-07-26 14:18:20

2011-07-27 11:19:33

iPhone UITableVie

2011-07-28 10:11:54

iPhone開發 備忘

2011-08-15 15:44:46

iPhone開發PDF

2011-08-18 16:24:44

iPhone開發圖片

2011-08-12 14:54:45

iPhone委托

2012-04-26 13:23:31

iPhone程序畫面控件調整

2011-07-08 15:08:16

iPhone 圖片

2011-07-25 17:13:31

iPhone 圖形 動畫

2011-07-26 09:41:23

iPhone xcode Mac OS X

2012-04-26 13:36:30

iPhone運行程序

2010-08-27 10:41:41

iPhone核心應用程序

2011-07-21 15:56:32

iPhone 截屏

2011-08-17 16:16:29

iPhone應用程序啟動過程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕 在线观看 | 在线视频日韩 | 国产精品久久久久影院色老大 | 午夜性视频 | 天堂中文在线播放 | 国产美女视频一区 | 草久在线视频 | 欧洲性生活视频 | 欧美日韩综合精品 | 国产精品久久久久久亚洲调教 | 精品久久久久久久久久久久 | 国产真实乱全部视频 | 亚洲午夜网 | 亚洲一区二区三区在线视频 | 自拍 亚洲 欧美 老师 丝袜 | 最新日韩精品 | 国产精品视频区 | 国产一区二区三区在线 | 日本不卡一区二区三区在线观看 | 97精品一区二区 | 久亚州在线播放 | 91精品国产综合久久久久久丝袜 | 中文字幕精品一区二区三区精品 | 国产欧美一区二区三区日本久久久 | 日韩欧美国产精品一区 | av网站免费 | 激情免费视频 | 日日做夜夜爽毛片麻豆 | 亚洲欧美一区二区三区视频 | 国内精品伊人久久久久网站 | 欧美视频第三页 | 精品一区二区电影 | 99精品久久99久久久久 | 欧美一级黑人aaaaaaa做受 | 国产精品高潮呻吟久久 | 欧美天堂| 日本精品一区二区三区在线观看 | 一区二区三区四区不卡 | 性福视频在线观看 | 91成人影院 | 天天干干|