您的位置:首页 > 其它

利用Runtime的Associated进行封装和回调

2015-12-07 15:34 232 查看
在App里时常会用到各种工具条,比如系统的toolBar、navBar等,根据不同的业务需求可能会有个性化的封装,这时常使用自己定义封装的控件,对于事件的传递和回调成为重要之一,常用的方法可以有:

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层里。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: