雖然一些東西在實(shí)際工作中我們是很少用到的,但是面試確實(shí)會經(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)類似的功能可能嗎?如果可能,會有什么潛在的問題?如果不能,為什么?
答:
這個(gè)問題涉及到了通知、代理和KVO,那么就一個(gè)個(gè)來,先回顧一下代理是怎么回事。
代理:
簡單說一下我所理解的代理吧:比如說有兩個(gè)對象,對象A想做一件事,但是它自己不方便去做,而對象B很適合去做這件事,那么B就可以作為A的委托去做這件事,而A就在適當(dāng)?shù)臅r(shí)機(jī)通知B去做這件事,并將做這件事所需要的方式和信息通知給B。初學(xué)的時(shí)候經(jīng)常用它來在控制器之間傳值,但是我覺得這樣有點(diǎn)大材小用了。傳值還是不必要用代理這么重量級的東西。下面看一下關(guān)于代理的小demo,為了簡單我用它傳了一個(gè)值,但是我覺得在真正需要傳值的場合,還是沒必要用代理,這里只為了演示代理是怎么回事。
聲明代理的代碼: