利用Runtime的Associated进行封装和回调
2015-12-07 15:34
232 查看
在App里时常会用到各种工具条,比如系统的toolBar、navBar等,根据不同的业务需求可能会有个性化的封装,这时常使用自己定义封装的控件,对于事件的传递和回调成为重要之一,常用的方法可以有:
1.方法传值,定义对应的方法,在更新状态时赋值过去,保存操作状态
2.通知,对于耦合度高的场景,可考虑使用Notification
3.delegate,代理回调,声明自定义代理来进行回调传值
4.KVO,键值监听,当监听属性有改变时进行通知回调
这里介绍使用Associated进行规范化回调,使用了为已有类增添新的属性的setter、getter方法
View Catagory:
在调用.data赋值时会回调dataDid和dataWill方法,在相应需要回调的类里实现dataUpdate方法来进行回调,对应的回调参数和状态可保存在model层里。
1.方法传值,定义对应的方法,在更新状态时赋值过去,保存操作状态
2.通知,对于耦合度高的场景,可考虑使用Notification
3.delegate,代理回调,声明自定义代理来进行回调传值
4.KVO,键值监听,当监听属性有改变时进行通知回调
这里介绍使用Associated进行规范化回调,使用了为已有类增添新的属性的setter、getter方法
View Catagory:
- (void)setData:(id)data { [self dataWillUpdate]; objc_setAssociatedObject(self, &kDataKey, data, OBJC_ASSOCIATION_RETAIN_NONATOMIC); [self dataDidUpdate]; } - (id)data { return objc_getAssociatedObject(self, &kDataKey); }
- (void)dataWillUpdate { // overwrite } - (void)dataDidUpdate { // overwrite }
在调用.data赋值时会回调dataDid和dataWill方法,在相应需要回调的类里实现dataUpdate方法来进行回调,对应的回调参数和状态可保存在model层里。
相关文章推荐
- 【转】awk 实例练习2
- 1053. Path of Equal Weight (30)【树+搜索】——PAT (Advanced Level) Practise
- <html5+css3+js>js代码运行后出错或无反应的原因总结
- 【转】awk 实例练习1
- 如何扩展大规模Web网站的性能?
- SQL实现增删改查操作
- 设置textView的行间距
- socket3
- 【iCore3 双核心板】例程八:定时器PWM实验——呼吸灯
- errno.h
- LeetCode—315 Count of Smaller Numbers After Self
- Android 调用系统相机拍照的返回结果
- Android测试教程13--模拟服务器MockServer之Moco详细介绍
- Mac 下解压NDK .bin文件
- Linux下 tomcat/mysql相关
- PHP中json中文乱码问题解决
- python:matplotlib
- 更改root与vnc密码,配置vnc
- IP访问SQL数据库设置
- proxool连接池配置