通过btn传递两个实例对象

来源:互联网 发布:项羽跟虞姬 知乎 编辑:程序博客网 时间:2024/05/19 13:56
通过btn传递两个实例对象  firstObject和secondObject
UIButton *btn = // create the buttonobjc_setAssociatedObject(btn, "firstObject", someObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC);objc_setAssociatedObject(btn, "secondObject", otherObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC);[btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];- (void)click:(UIButton *)sender{    id first = objc_getAssociatedObject(btn, "firstObject");    id second = objc_setAssociatedObject(btn, "secondObject");    // etc.}
向以上方法那样,只要设置了关联,当把button传递给@selector的参数时,也顺便把另外两个参数也传递过去了。就类似设了button的两个属性,但是这种方法简单多了
第一步: 设定关联
objc_setAssociatedObject(btn, "firstObject", someObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
第一个参数:btn为被关联者(主体),第二个参数:firstObject为指向关联的对象的指针(一般为一个static字符串),第三个参数:关联的对象实例,第四个对象:关联的方式(有几种,类似设定.h文件属性时候的 assign,retain等)
第二步:得到关联的对象
    id first = objc_getAssociatedObject(btn, "firstObject");
第一个参数:为被关联者
第二个参数:为关联对象的指针。
来自:button with multiparameters
0 0