浅入|浅入 RunTime

关于 运行时的博客

http://my.oschina.net/carson6931/blog/506050
http://www.cocoachina.com/ios/20150629/12299.html


UIAlertView*alert = [[UIAlertViewalloc]initWithTitle:@"提示"message:@"我要传值·"delegate:selfcancelButtonTitle:@"确定"otherButtonTitles:nil];

alert.delegate=self;
[alertshow];
//#import 头文件
//objc_setAssociatedObject需要四个参数:源对象,关键字,关联的对象和一个关联策略。
//1源对象alert
//2关键字唯一静态变量key associatedkey
//3关联的对象sender
//4关键策略OBJC_ASSOCIATION_RETAIN_NONATOMIC


//通过objc_getAssociatedObject获取关联对象

NSString*messageString =objc_getAssociatedObject(alertView, &associatedkey);


与 Associated Objects 相关的函数主要有三个,我们可以在 runtime 源码的 runtime.h 文件中找到它们的声明:

void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy);
id objc_getAssociatedObject(id object, const void *key);
void objc_removeAssociatedObjects(id object);
这三个函数的命名对程序员非常友好,可以让我们一眼就看出函数的作用:
objc_setAssociatedObject 用于给对象添加关联对象,传入 nil 则可以移除已有的关联对象;
objc_getAssociatedObject 用于获取关联对象;
【浅入|浅入 RunTime】objc_removeAssociatedObjects 用于移除一个对象的所有关联对象。

    推荐阅读