首页 > 学院 > 开发设计 > 正文

iOS-runtime-objc_setAssociatedObject(关联对象以及传值)

2019-11-14 18:21:48
字体:
来源:转载
供稿:网友

例子:

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的属性了,很方便

 

 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表