objc_setAssociatedObject 1】的更多相关文章

本文转载请注明出处--polobymulberry-博客园 两个函数名称中都有associate,意思是关联,这里的关联表示的是一种 从属关系,即有一个关联者和被关联者,我们说NSArray的对象array关联了NSString对象string,这里的array就是关联者(表示主动关联别人),string就是被关联者(表示被动被别人关联).我们就会产生三个哲学问题. 关联是什么? 为什么关联? 怎么关联? 既然关联是要有关联者和被关联者,我们可以看到objc_setAssociatedObjec…
关联 关联是指把两个对象相互关联起来,使得其中的一个对象作为另外一个对象的一部分.    关联特性只有在Mac OS X V10.6以及以后的版本上才是可用的. 在类的定义之外为类增加额外的存储空间 使用关联,我们可以不用修改类的定义而为其对象增加存储空间.这在我们无法访问到类的源码的时候或者是考虑到二进制兼容性的时候是非常有用.    关联是基于关键字的,因此,我们可以为任何对象增加任意多的关联,每个都使用不同的关键字即可.关联是可以保证被关联的对象在关联对象的整个生命周期都是可用的(在垃圾自…
今天在github上查看MJPopupViewController这个项目,发现里面用到了objc_setAssociatedObject,用来为类别添加成员变量. 我百度之后,发现有人是这样说明的: category与associative作为objective-c的扩展机制的两个特性,category即类型,可以通过它来扩展方法:associative,可以通过它来扩展属性:在iOS开发中,可能category比较常见,相对的associative,就用的比较少,要用它必须使用<objc/r…
为UIButton的category添加属性 UIButton+subTitle.h #import <UIKit/UIKit.h> #import <objc/runtime.h> @interface UIButton (subTitle) @property (nonatomic, copy) NSString *subTitle; @property (nonatomic, strong) UIColor *foreColor; //此处添加int类型属性不能使用,因为ob…
点按钮的时候,给alertView添加一个关联对象(被点击这个按钮), objc_setAssociatedObject(alert, &kRepresentedObject, sender, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 在UIAlertViewDelegate中取出关联对象(被点击的按钮) UIButton *sender = objc_getAssociatedObject(alertView, &kRepresentedObject); &…
转载自:http://blog.csdn.net/onlyou930/article/details/9299169 分类: Objective-C2013-07-11 11:54 3420人阅读 评论(0) 收藏 举报 关联 关联是指把两个对象相互关联起来,使得其中的一个对象作为另外一个对象的一部分.    关联特性只有在Mac OS X V10.6以及以后的版本上才是可用的. 在类的定义之外为类增加额外的存储空间 使用关联,我们可以不用修改类的定义而为其对象增加存储空间.这在我们无法访问到类…
这个可以解决变量传递问题, 就不用定义全局的了. 使用例子: 首先导入头文件:#import <objc/runtime.h> 设置静态常量:static char alertinfokey; - (IBAction)showAlertAction:(id)sender { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"title" message:@"warn" delegate:s…
属性 其实就是get/set 方法.我们可以使用  objc_setAssociatedObject/objc_getAssociatedObject  实现 动态向类中添加 方法 @interface NSObject (CategoryWithProperty) @property (nonatomic, strong) NSObject *property; @end @implementation NSObject (CategoryWithProperty) - (NSObject *…
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 - (void)viewDidLoad {     [super viewDi…
今天看了FDTemplateLayoutCell的源码,类别里面相当频繁使用了关联对象,做笔记!!!学套路 主要函数: void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy); id objc_getAssociatedObject(id object, const void *key); void objc_removeAssociatedObjects…