设置关联对象AssociatedObject
来源:互联网 发布:淘宝卖家贷款在哪里 编辑:程序博客网 时间:2024/04/28 05:34
通常我们需要添加新的方法时,会给一个类添加分类,这样我们可以动态的为原有类添加新的方法,而不需要继承原有类,提高了执行效率。但是分类只能添加方法,不能添加属性,那么我们需要给分类添加属性的时候就可以用到关联对象了。
关联对象有下面这几种方法:
/** * 设置关联对象 * * @param 需要被关联的对象 * @param key 关联对象的key 一般这样设置static char key; * @param value 被关联对象的属性,如果设置nil,就取消关联 * @param policy 关联策略,相当于属性的内存管理语义 */OBJC_EXPORT void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_1);/** * 获取关联对象 * * @param object 被关联的对象 * @param key 关联对象的key * * @return 返回关联属性的值 * * @see objc_setAssociatedObject */OBJC_EXPORT id objc_getAssociatedObject(id object, const void *key) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_1);
/** * 移除关联对象 */OBJC_EXPORT void objc_removeAssociatedObjects(id object) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_1);
例如,给NSObject (AssociatedObject)添加关联属性
- (void)setName:(NSString *)name { objc_setAssociatedObject(self, @selector(name), name, OBJC_ASSOCIATION_RETAIN_NONATOMIC);}
- (NSString *)name { return objc_getAssociatedObject(self, _cmd);}
这样只需要给关联对象赋值就可以了
NSString *str = @"associatedString";str.name = @"mm";
0 0
- 设置关联对象AssociatedObject
- 关联对象 AssociatedObject 完全解析
- Objective-C之AssociatedObject(关联)
- oc AssociatedObject (oc)
- 关联对象
- 关联对象
- hibernate设置延迟加载后获得关联对象报错的解决方案
- iOS Runtime详解之给Category添加成员变量(怎么设置关联对象)
- JavaBean 设置关联属性
- emacs设置文件关联
- 设置文件关联
- Loadrunner关联设置
- 设置文件关联
- MFC文件关联设置
- ultraedit 文件关联设置
- 设置Editor关联更改
- Jmeter-关联设置
- jmeter关联设置
- 2016-08-07 反射基础
- LeetCode | Unique Binary Search Trees
- Android 关于RecyclerView嵌套Scrollview滑动卡顿问题
- javascript 创建对象,访问对象的属性,访问对象的方法。
- hdu5807Keep In Touch
- 设置关联对象AssociatedObject
- C语言volatile 作用
- 数据结构学习五 递归
- 前端知识点总结
- 长大了,烦恼就多了
- HDU 1003 Max Sum
- android线程池
- 程序睡眠
- (十二)、可变参数