詳細(xì)了解Cocoa中KVO機(jī)制是什么
詳細(xì)了解Cocoa中KVO機(jī)制是什么是本文要介紹的內(nèi)容,通過(guò)本文你可以方便有很好的去學(xué)習(xí)cocoa,不多說(shuō),我們來(lái)看詳細(xì)內(nèi)容。
iPhone開發(fā)最基本的就是掌握蘋果Cocoa這個(gè)面向?qū)ο箝_發(fā)的基本框架.本文主要簡(jiǎn)單介紹Cocoa的KVO機(jī)制的概念及用法.
問(wèn):KVO是一個(gè)怎么樣的Cocoa機(jī)制?
答:Kvo(Key Value Coding)是cocoa中用來(lái)設(shè)值或取值的協(xié)議(NSKeyValueCoding),跟java的ejb有點(diǎn)類似。都是通過(guò)對(duì)變量和函數(shù)名進(jìn)行規(guī)范達(dá)到方便設(shè)置類成員值的目的.它是Cocoa的一個(gè)重要機(jī)制,它有點(diǎn)類似于Notification,但是,它提供了觀察某一屬性變化的方法,而Notification需要一個(gè)發(fā)送notification的對(duì)象,這樣KVO就比Notification極大的簡(jiǎn)化了代碼。這種觀察-被觀察模型適用于這樣的情況,比方說(shuō)根據(jù)A(數(shù)據(jù)類)的某個(gè)屬性值變化,B(view類)中的某個(gè)屬性做出相應(yīng)變化。對(duì)于推崇MVC的cocoa而言,kvo應(yīng)用價(jià)值很高。
kvo的使用方法:
1、注冊(cè): -(void)addObserver:(NSObject *)anObserver forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(void *)context keyPath就是要觀察的屬性值,options給你觀察鍵值變化的選擇,而context方便傳輸你需要的數(shù)據(jù)(注意這是一個(gè)void型)
2、實(shí)現(xiàn)變化方法:
-(void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context change里存儲(chǔ)了一些變化的數(shù)據(jù),比如變化前的數(shù)據(jù),變化后的數(shù)據(jù);如果注冊(cè)時(shí)context不為空,這里context就能接收到。是不是很簡(jiǎn)單?kvo的邏輯非常清晰,實(shí)現(xiàn)步驟簡(jiǎn)單。
小結(jié):詳細(xì)了解Cocoa中KVO機(jī)制是什么的內(nèi)容介紹完了,通過(guò)本文的學(xué)習(xí)是不是以及對(duì)KVO有了一定的基礎(chǔ)了解。好吧!最后希望本文對(duì)你有所幫助!