5. NSNotification和KVO的区别和用法是什么?
2015-07-24 18:33
603 查看
NSNotification和KVO的区别和用法是什么?
什么时候应该使用通知,什么时候应该使用KVO,它们的实现上有什么区别吗?
如果用protocol和delegate(或者delegate的Array)来实现类似的功能可能吗?
如果可能,会有什么潜在的问题?如果不能,为什么?(虽然protocol和delegate这种东西面试已经面烂了…)
NSNotification是通知模式在iOS的实现,KVO的全称是键值观察(Key-value observing),其是基于KVC(key-value coding)的,KVC是一个通过属性名访问属性变量的机制。例如将Model层的变化,通知到多个Controller对象时,可以使用NSNotification;如果是只需要观察某个对象的某个属性,可以使用KVO。
对于委托模式,在设计模式中是对象适配器模式,其是delegate是指向某个对象的,这是一对一的关系,而在通知模式中,往往是一对多的关系。委托模式,从技术上可以现在改变delegate指向的对象,但不建议这样做,会让人迷惑,如果一个delegate对象不断改变,指向不同的对象。
NSNotification和KVO的区别和用法是什么?
什么时候应该使用通知,什么时候应该使用KVO,它们的实现上有什么区别吗?
如果用protocol和delegate(或者delegate的Array)来实现类似的功能可能吗?
如果可能,会有什么潜在的问题?如果不能,为什么?(虽然protocol和delegate这种东西面试已经面烂了…)
NSNotification是通知模式在iOS的实现,KVO的全称是键值观察(Key-value observing),其是基于KVC(key-value coding)的,KVC是一个通过属性名访问属性变量的机制。例如将Model层的变化,通知到多个Controller对象时,可以使用NSNotification;如果是只需要观察某个对象的某个属性,可以使用KVO。
对于委托模式,在设计模式中是对象适配器模式,其是delegate是指向某个对象的,这是一对一的关系,而在通知模式中,往往是一对多的关系。委托模式,从技术上可以现在改变delegate指向的对象,但不建议这样做,会让人迷惑,如果一个delegate对象不断改变,指向不同的对象。
相关文章推荐
- 马上着手开发 iOS 应用程序 至 读后笔记
- iOS KVC & KVO
- IOS 如何选择delegate、notification、KVO?
- KVO初体验
- IOS观察者模式之KVO代码
- kvo浅析与实例
- 通知中心 NSNotification
- iOS KVO(键-值观察) 的使用总结
- KVC 与 KVO 理解
- iOS-KVO究竟怎么用
- Cocoa中KVO的简单用法【思路清晰】
- OC笔记 - NSNotification、键盘通知(2015.3.7)
- KVO/KVC
- kvc&kvo
- 传递数据NSNotification
- 通知机制的使用
- IOS之KVO
- KVO/KVC系列之一——什么是KVC
- KVO/KVC系列之二——KVC编程
- iOS —— 通知、监测KVO