通過(guò)btn傳遞兩個(gè)實(shí)例對(duì)象 firstObject和secondObject
UIButton *btn = // create the button
objc_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.
}
向以上方法那樣,只要設(shè)置了關(guān)聯(lián),當(dāng)把button傳遞給@selector的參數(shù)時(shí),也順便把另外兩個(gè)參數(shù)也傳遞過(guò)去了。就類似設(shè)了button的兩個(gè)屬性,但是這種方法簡(jiǎn)單多了
第一步: 設(shè)定關(guān)聯(lián)
objc_setAssociatedObject(btn, "firstObject", someObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
第一個(gè)參數(shù):btn為被關(guān)聯(lián)者(主體),第二個(gè)參數(shù): firstObject為指向關(guān)聯(lián)的對(duì)象的指針(一般為一個(gè)static字符串),第三個(gè)參數(shù):關(guān)聯(lián)的對(duì)象實(shí)例,第四個(gè)對(duì)象:關(guān)聯(lián)的方式(有幾種,類似設(shè)定.h文件屬性時(shí)候的 assign,retain等)
第二步:得到關(guān)聯(lián)的對(duì)象 id first = objc_getAssociatedObject(btn, "firstObject");
第一個(gè)參數(shù):為被關(guān)聯(lián)者
第二個(gè)參數(shù):為關(guān)聯(lián)對(duì)象的指針。
來(lái)自:button with multiparameters
版權(quán)聲明:本文為博主原創(chuàng)文章
|