浅入 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 用于获取关联对象;

objc_removeAssociatedObjects 用于移除一个对象的所有关联对象。

你可能感兴趣的:(浅入 RunTime)