objc runtime 动态增加属性
来源:互联网 发布:物料管理系统. java 编辑:程序博客网 时间:2024/05/16 23:41
objective-c中,有类别可以在不修改源码的基础上增加方法;近排在看别人的开源代码时,发现还可以动态增加属性。而且是在运行时
使用运行时库,必须要先引入 objc/runtime.h
可以使用的函数如下:
OBJC_EXPORT void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)
这个函数
OBJC_EXPORT id objc_getAssociatedObject(id object, const void *key)
__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_1);
一个类别和动态添加属性的例子:
UILabel+Associate.h
#import <UIKit/UIKit.h>@interface UILabel (Associate)- (void) setFlashColor:(UIColor *) flashColor;- (UIColor *) getFlashColor;@end
UILabel+Associate.m
#import "UILabel+Associate.h"#import <objc/runtime.h>@implementation UILabel (Associate)static char flashColorKey;- (void) setFlashColor:(UIColor *) flashColor{ objc_setAssociatedObject(self, &flashColorKey, flashColor, OBJC_ASSOCIATION_RETAIN_NONATOMIC);}- (UIColor *) getFlashColor{ return objc_getAssociatedObject(self, &flashColorKey);}@end
调用代码:
UILabel *lab = [[UILabel alloc] init];
[lab setFlashColor:[UIColor redColor]];
NSLog(@"%@", [lab getFlashColor]);
0 0
- objc runtime 动态增加属性
- objc runtime 动态增加属性
- objc runtime 动态增加属性
- objc runtime 动态增加属性
- 通过objc runtime 为类别(Category)动态增加属性
- KVO的使用以及 objc runtime 动态增加属性
- iOS在分类中添加属性,运行时编程,objc runtime 动态增加属性
- runtime结合category和block动态增加方法以及属性
- objc runtime 动态获取颜色值
- ObjC Runtime
- Objc Runtime
- Objc Runtime
- objc runtime
- runtime——增加属性
- 关联增加属性runtime.h
- runtime动态添加属性
- Runtime 动态添加属性
- runtime -- 动态添加属性
- LeetCode - 219. Contains Duplicate II
- 等额本息 vs 等额本金
- storm安装
- 翻转行为
- 参与比取胜更重要
- objc runtime 动态增加属性
- 新学的vim命令记录
- [HNOI2005]狡猾的商人(并查集维护前缀和)
- ORACLE 更新推荐人数
- 51nod1174区间最大数(RMQ)
- 关于管道的一些知识
- android Xml控件属性
- 代码:编写一个简单的字符设备驱动——创建多个同类型设备
- JAVA之旅(二十四)——I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习