runtime获取对象属性及方法列表
来源:互联网 发布:mac 管理员运行终端 编辑:程序博客网 时间:2024/06/05 10:36
创建NSObject的类目,引入runtime
#import <objc/runtime.h>
.m文件
/** * 获取所有属性及对应的值 * */-(NSDictionary *)getAllPropertiesAndValues{ NSMutableDictionary *props = [NSMutableDictionary dictionary]; unsigned int outCount; //属性的链表 objc_property_t *properties =class_copyPropertyList([self class], &outCount); //遍历链表 for (int i = 0; i<outCount; i++) { objc_property_t property = properties[i]; //获取属性字符串 const char* propertyName =property_getName(property); //转换成NSString NSString *key = [NSString stringWithUTF8String:propertyName]; //获取属性对应的value id value = [self valueForKey:key]; if (value) { [props setObject:value forKey:key]; } } //释放结构体数组内存 free(properties); return props;}/** * 获取对象的所有属性 * * @return 属性数组 */- (NSArray *)getAllProperties{ unsigned int count; //获取属性的链表 objc_property_t *properties =class_copyPropertyList([self class], &count); NSMutableArray *propertiesArray = [NSMutableArray arrayWithCapacity:count]; for (int i = 0; i < count ; i++) { objc_property_t property = properties[i]; const char* propertyName =property_getName(property); [propertiesArray addObject: [NSString stringWithUTF8String:propertyName]]; } free(properties); return propertiesArray;}/** * 获取对象的所有方法 */-(NSArray *)getAllMethods{ unsigned int count_f =0; //获取方法链表 Method* methodList_f = class_copyMethodList([self class],&count_f); NSMutableArray *methodsArray = [NSMutableArray arrayWithCapacity:count_f]; for(int i=0;i<count_f;i++) { Method temp_f = methodList_f[i]; //方法的调用地址 IMP imp_f = method_getImplementation(temp_f); //方法 SEL name_f = method_getName(temp_f); //方法名字符串 const char* name_s =sel_getName(method_getName(temp_f)); //参数数量 int arguments = method_getNumberOfArguments(temp_f); //返回方法的参数和返回值的描述的字串 const char* encoding =method_getTypeEncoding(temp_f); NSLog(@"方法名:%@,参数个数:%d,编码方式:%@",[NSString stringWithUTF8String:name_s], arguments,[NSString stringWithUTF8String:encoding]); NSString *methodStr = NSStringFromSelector(name_f); [methodsArray addObject:methodStr]; } free(methodList_f); return methodsArray;}
0 0
- runtime获取对象属性及方法列表
- runtime实际应用(1)- 获取对象属性及方法列表
- RunTime 获取对象属性和方法
- 获取对象的类名,属性及方法列表
- Runtime获取类属性列表和方法列表
- runtime查看对象的属性列表、方法列表
- iOS - Runtime 获取属性列表 方法列表 成员变量列表 协议列表
- Runtime之动态获取属性列表
- runtime获取属性列表,修改属性值,添加并修改私有方法的调用
- OC 的 Runtime 动态获取对象属性
- Runtime获取对象隐藏的属性
- 获取对象的属性列表
- iOS获取对象属性列表
- FMDB封装,用OC方法存储model,不用写SQL语句。使用runtime获取对象属性
- 获取class列表属性方法
- Runtime运行时用法1------获取类属性列表
- ios 通过runtime 获取属性列表并修改变量值
- PHP获取类中常量,属性,及方法列表的方法
- 正则表达式(以Java语言为例)
- 快速排序以及堆排序在查找数方面的主要应用 即将引出线性查找BFPRT算法
- Spark架构与作业执行流程简介
- 如何对web.config进行加密和解密
- 非实时系统精确定时器的实现
- runtime获取对象属性及方法列表
- 联合查询 thinkPHP
- Excel导入导出
- tuzicms 2.5 zend环境检测提示未安装,无法下一步安装程序
- Java和JavaScript中使用Json方法大全
- 数据仓库中的SQL性能优化 - Hive篇
- Linux驱动开发之 六 (那些必须要了解的硬件知识 之 仪器篇)
- SDWebImage 原理及使用
- Sql server 中暂停与恢复主键自增