虽然一些东西在实际工作中我们是很少用到的,但是面试确实会经常问到一些我们不常用的东西,所以说有时候看一看还是有必要的,一方面面试也是很重要的一件事,另一方面某些情况下也能帮我们查漏补缺。
一、NSNotification和KVO的区别和用法是什么?什么时候应该使用通知,什么时候应该使用KVO,它们的实现上有什么区别吗?如果用protocol和delegate(或者delegate的Array)来实现类似的功能可能吗?如果可能,会有什么潜在的问题?如果不能,为什么?
答:
这个问题涉及到了通知、代理和KVO,那么就一个个来,先回顾一下代理是怎么回事。
代理:
简单说一下我所理解的代理吧:比如说有两个对象,对象A想做一件事,但是它自己不方便去做,而对象B很适合去做这件事,那么B就可以作为A的委托去做这件事,而A就在适当的时机通知B去做这件事,并将做这件事所需要的方式和信息通知给B。初学的时候经常用它来在控制器之间传值,但是我觉得这样有点大材小用了。传值还是不必要用代理这么重量级的东西。下面看一下关于代理的小demo,为了简单我用它传了一个值,但是我觉得在真正需要传值的场合,还是没必要用代理,这里只为了演示代理是怎么回事。
声明代理的代码:
延伸阅读
学习是年轻人改变自己的最好方式