objc_getAssociatedObject, objc_setAssociatedObject
来源:互联网 发布:电子施工图软件 编辑:程序博客网 时间:2024/05/16 07:28
category与associative作为objective-c的扩展机制的两个特性,category即类型,可以通过它来扩展方法;associative,可以通过它来扩展属性;在iOS开发中,可能category比较常见,相对的associative,就用的比较少,要用它必须使用<objc/runtime.h>的头文件,然后就可以自由使用objc_getAssociatedObject以及objc_setAssociatedObject,我们来看下这两个方法:
OBJC_EXPORT void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)
__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_1);
OBJC_EXPORT id objc_getAssociatedObject(id object, const void *key)
__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_1);
__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_1);
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);
__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_1);
objc_getAssociatedObject、objc_setAssociatedObject、objc_removeAssociatedObjects都是Obj-c中的外联方法,object 参数作为待扩展的对象实例,key作为该对象实例的属性的键,而value就是对象实例的属性的值,policy作为关联的策略,它的枚举包括:
enum {
OBJC_ASSOCIATION_ASSIGN = 0,
OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1,
OBJC_ASSOCIATION_COPY_NONATOMIC = 3,
OBJC_ASSOCIATION_RETAIN = 01401,
OBJC_ASSOCIATION_COPY = 01403
};
OBJC_ASSOCIATION_ASSIGN = 0,
OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1,
OBJC_ASSOCIATION_COPY_NONATOMIC = 3,
OBJC_ASSOCIATION_RETAIN = 01401,
OBJC_ASSOCIATION_COPY = 01403
};
具体我就多说了,可以看得懂的。
另外,objc_removeAssociatedObjects可以删除指定对象实例的所有扩展属性。
可以用它来绑定数据到控件上,并可以自由读取。
- objc_getAssociatedObject, objc_setAssociatedObject
- objc_getAssociatedObject, objc_setAssociatedObject
- objc_setAssociatedObject、objc_getAssociatedObject
- objc_getAssociatedObject, objc_setAssociatedObject
- objc_setAssociatedObject/objc_getAssociatedObject
- 关联 objc_setAssociatedObject、objc_getAssociatedObject、objc_removeAssociatedObjects
- 关联objc_setAssociatedObject,objc_getAssociatedObject
- iOS关联,objc_getAssociatedObject, objc_setAssociatedObject
- objc_setAssociatedObject、objc_getAssociatedObject、objc_removeAssociatedObjects
- iOS 关于objc_setAssociatedObject,objc_getAssociatedObject
- 关联(objc_setAssociatedObject、objc_getAssociatedObject)
- objc_setAssociatedObject、objc_getAssociatedObject、objc_removeAssociatedObjects
- objc_setAssociatedObject和objc_getAssociatedObject
- ios扩展机制objc_setAssociatedObject,objc_getAssociatedObject
- OC对象关联~objc_setAssociatedObject/objc_getAssociatedObject
- ios扩展机制objc_setAssociatedObject,objc_getAssociatedObject
- 关联(objc_setAssociatedObject、objc_getAssociatedObject、objc_removeAssociatedObjects)
- objc_setAssociatedObject、objc_getAssociatedObject、objc_removeAsso使用场景
- WIZnet无线模块应用-音/视频数据流盘
- Oracle Silent Install 静默安装
- 30分钟LINQ教程
- 十大Web应用安全风险
- 1.ARC和非ARC文件共存
- objc_getAssociatedObject, objc_setAssociatedObject
- Java编程思想--构造器初始化顺序
- ORACLE数据库ORA-00257解决
- PHP PDO 学习笔记
- jquery实现按enter键表单不提交而是换行
- 单点登录系列之三---简单实施SSO
- Java线程安全和非线程安全
- delphi的取整函数round、trunc、ceil和floor
- WebService学习:SOPA与WSDL基本语法