Delegate,Block,Notification, KVC,KVO,Target-Action
2017-06-01 07:34
337 查看
Target-Action:
目标-动作机制,所有的UIControl及子类都是这个机制;
原理:在对象产生某个事件的特定时刻,给一个对象发送一个消息;类内部target去执行action方法
Delegate:
iOS2.0以后出现,delegate配合protocol,delegate 是一对一的关系,修饰符使用weak, 当
Block:
iOS4.0以后出现,一对一
Notification:
一对多,
KVC:
键值编码,即是指 NSKeyValueCoding,一个非正式的Protocol,提供一种机制来间接访问对象的属性。而不是通过调用Setter、Getter方法访问。KVO 就是基于 KVC 实现的关键技术之一。
KVC的常用方法:
赋值:
取值:
实现原理:
1.首先去模型中查找有没有
2.若无,去模型中查找有没有
3.若无,再去模型中查找有没有
4.找不到,就会直接报找不到的错误(
KVO:
键值观察
KVO常用方法
目标-动作机制,所有的UIControl及子类都是这个机制;
原理:在对象产生某个事件的特定时刻,给一个对象发送一个消息;类内部target去执行action方法
Delegate:
iOS2.0以后出现,delegate配合protocol,delegate 是一对一的关系,修饰符使用weak, 当
Block:
iOS4.0以后出现,一对一
Notification:
一对多,
KVC:
键值编码,即是指 NSKeyValueCoding,一个非正式的Protocol,提供一种机制来间接访问对象的属性。而不是通过调用Setter、Getter方法访问。KVO 就是基于 KVC 实现的关键技术之一。
KVC的常用方法:
赋值:
- (void)setValue:(nullable id)value forKey:(NSString *)key; - (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath; // 注解: setValue:(属性值) forKey:(属性名),(用于简单属性)。 setValue:(属性值) forKeyPath:(属性名),(用于复合属性,进行内部的点语法,层层访问内部的属性; 例如student.name,Student学生模型类中的name属性。
取值:
- (id)valueForKey:(NSString *)key; - (nullable id)valueForKeyPath:(NSString *)keyPath; // 注解: valueForKey:属性名 valueForKeyPath:属性名(用于复合属性)
实现原理:
1.首先去模型中查找有没有
setName,若有,直接调用赋值
[self setName:@"白开水ln简书"]。
2.若无,去模型中查找有没有
name属性,若有,直接访问属性赋值
name = value。
3.若无,再去模型中查找有没有
_name成员变量,若有,直接访问属性赋值
_name = value。
4.找不到,就会直接报找不到的错误(
valueForUndefinedKey:)
KVO:
键值观察
KVO常用方法
[self addObserver: forKeyPath: options: context:] - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context { } [self removeObserver: forKeyPath:]
相关文章推荐
- iOS通讯模式(KVO、Notification、Delegate、Block、Target-Action的区别)
- iOS通讯模式(KVO、Notification、Delegate、Block、Target-Action的区别)
- KVO KVC Notification Delegate Block
- iOS中消息传递机制(KVO,Notification,delegation,block,Target-Action)
- 页面传值--Delegate/Block/KVO/Notification
- MVVM数据绑定的实现方式(KVO、block、Delegate、Notification、RAC)
- KVC、KVO、Notification、Delegate代码实现及比较
- delegate , Notification , protocal , KVC , KVO
- Notification,Delegate,KVO,Block的浅易理解
- KVC KVO delegate block NSNotification 的应用场景 以及各种坑
- KVO、Notification、delegate、block 各自的优缺点,效率还有使用场景
- 常见的6种传值 ------ 代理(delegate)传值 单例传值 Target-Action传值 属性传值 block传值 通知传值
- iOS 对象之间的通信方式(delegate、block、NSNotification、kvc、kvo)总结
- iOS 如何选择delegate、notification、KVO?
- delegate、notification和KVO
- KVC、KVO、NSNotification、delegate 总结及区别
- OS 如何选择delegate、notification、KVO?
- KVC、KVO、NSNotification、delegate 总结及区别
- IOS 如何选择delegate、notification、KVO?
- IOS 如何选择delegate、notification、KVO?