IOS运行时传递对象或者添加属性

之前做一个项目时,碰到一个问题,为一个UITableViewCell中的不同按钮绑定不同的对象,点击按钮后获取绑定的相应的对象。目前我所知道的有两种方式可以实现该需求。1.使用IOS提供的运行时  2.之定义UIButton,为其设置属性。下面介绍第一种方式:

一、使用运行时必须首先导入:

#import "objc/runtime.h"

二、绑定对象:

objc_setAssociatedObject(<#id object#>, <#const void *key#>, <#id value#>, <#objc_AssociationPolicy policy#>);这个方法可以让一个对象和另一个对象关联,就是说一个对象可以保持对另一个对象的引用,并获取那个对象。参数分别表示:关联的源对象、与对象关联的键、关联键的值、关联的协议。关联协议可以参考objc_AssociationPolicy,关联的键一般是地址如:static char operationKey;  使用&operationKey作为键。值得类型是id。

三、获取绑定的对象:

objc_getAssociatedObject(<#id object#>, <#const void *key#>);

四、实例应用,为UIButton绑定值:

//绑定值或对象

static const char * const kZSYPopoverListButtonClickForCancel = "kZSYPopoverListButtonClickForCancel";

objc_setAssociatedObject(self.cancelButton, kZSYPopoverListButtonClickForCancel, [block copy], OBJC_ASSOCIATION_RETAIN);

//获取值或者对象

UIButton *button = (UIButton *)sender;

block = objc_getAssociatedObject(sender, kZSYPopoverListButtonClickForCancel);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值