码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-09-09 06:17:01      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

例子:

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

 

 

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

标签:

原文地址:http://www.cnblogs.com/hxwj/p/4793471.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!