通過btn傳遞兩個實例對象 firstObject和secondObject
<code>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. }</code>
向以上方法那樣,只要設置了關聯,當把button傳遞給@selector的參數時,也順便把另外兩個參數也傳遞過去了。就類似設了button的兩個屬性,但是這種方法簡單多了
<code>第一步: 設定關聯</code>
<code>objc_setAssociatedObject(btn, "firstObject", someObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC);</code>
<code>第一個參數:btn為被關聯者(主體),第二個參數:</code>firstObject為指向關聯的對象的指針(一般為一個static字符串),第三個參數:關聯的對象實例,第四個對象:關聯的方式(有幾種,類似設定.h文件屬性時候的 assign,retain等)
第二步:得到關聯的對象
<code> id first = objc_getAssociatedObject(btn, "firstObject"); </code>
<code>第一個參數:為被關聯者</code>
<code>第二個參數:為關聯對象的指針。</code>