雖然一些東西在實(shí)際工作中我們是很少用到的,但是面試確實(shí)會(huì)經(jīng)常問到一些我們不常用的東西,所以說有時(shí)候看一看還是有必要的,一方面面試也是很重要的一件事,另一方面某些情況下也能幫我們查漏補(bǔ)缺。

一、NSNotification和KVO的區(qū)別和用法是什么?什么時(shí)候應(yīng)該使用通知,什么時(shí)候應(yīng)該使用KVO,它們的實(shí)現(xiàn)上有什么區(qū)別嗎?如果用protocol和delegate(或者delegate的Array)來實(shí)現(xiàn)類似的功能可能嗎?如果可能,會(huì)有什么潛在的問題?如果不能,為什么?

答:

這個(gè)問題涉及到了通知、代理和KVO,那么就一個(gè)個(gè)來,先回顧一下代理是怎么回事。

 代理:

簡單說一下我所理解的代理吧:比如說有兩個(gè)對(duì)象,對(duì)象A想做一件事,但是它自己不方便去做,而對(duì)象B很適合去做這件事,那么B就可以作為A的委托去做這件事,而A就在適當(dāng)?shù)臅r(shí)機(jī)通知B去做這件事,并將做這件事所需要的方式和信息通知給B。初學(xué)的時(shí)候經(jīng)常用它來在控制器之間傳值,但是我覺得這樣有點(diǎn)大材小用了。傳值還是不必要用代理這么重量級(jí)的東西。下面看一下關(guān)于代理的小demo,為了簡單我用它傳了一個(gè)值,但是我覺得在真正需要傳值的場合,還是沒必要用代理,這里只為了演示代理是怎么回事。

聲明代理的代碼:

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式