例子:
static const char kRePResentedObject;- (IBAction)doSomething:(id)sender { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; objc_setAssociatedObject(alert, &kRepresentedObject, sender, OBJC_ASSOCIATION_RETAIN_NONATOMIC); [alert show]; }- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { UIButton *sender = objc_getAssociatedObject(alertView, &kRepresentedObject); self.buttonLabel.text = [[sender titleLabel] text];}
其中:void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)
上面參數依次為:源對象,關鍵字(唯一靜態變量),關聯對象,關聯策略
id objc_getAssociatedObject(id object, const void *key)
上面參數依次為:源對象,關鍵字(唯一靜態變量),返回的是關聯的對象
這樣點擊不同的button觸發UIAlertView點擊事件就能改變相應的button的屬性了,很方便
新聞熱點
疑難解答