浅入|浅入 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 用于移除一个对象的所有关联对象。
推荐阅读
- 由浅入深理解AOP
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- 四首关于旅行记忆的外文歌曲
- 醒不来的梦
- 关于自我为中心的一点感想
- 「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)
- 关于Ruby的杂想
- 关于读书的思考
- 关于this的一些问题(1)
- 《声之形》