Runtime – 获取成员变量、值、动态创建类
2016-05-04 17:48
309 查看
import
import “CustomClass.h”
@implementation NSObject (RuntimeTest)-(id)testRunTime:(NSString )classname age:(NSString )age{
unsigned int propertyCount = 0; objc_property_t *propertys = class_copyPropertyList([self class], &propertyCount); for (unsigned int i = 0; i < propertyCount; i++) { objc_property_t property = propertys[i]; //获取成员的名称 NSString *propertyName = [[NSString alloc] initWithCString:property_getName(property) encoding:NSUTF8StringEncoding]; NSLog(@"propertyName = %@ -- 成员名称",propertyName); //获取成员内容的Ivar Ivar ivar = class_getInstanceVariable([self class], [propertyName UTF8String]); if (ivar == nil) { ivar = class_getInstanceVariable([self class], [[NSString stringWithFormat:@"_%@",propertyName] UTF8String]); } id propertyVal = object_getIvar(self, ivar); NSLog(@"propertyVal = %@ --值",propertyVal); Class varClass = NSClassFromString(classname); id varobj = [[varClass alloc]init]; [varobj test]; Ivar ivarObj = class_getInstanceVariable(varClass, [@"_age" UTF8String]); object_setIvar(varobj, ivarObj, age); return varobj; } return nil;
}
@end
项目Dome:https://github.com/mrLIHUAN/Runtime
相关文章推荐
- oracle驱动表被驱动表
- 基于zookeeper的配置中心
- python实时监控访问日志
- C++ 在图片上打印文字并保存图片
- HashMap 原理分析
- Calendar 日历类的基本用法
- ld: library not found for -lPods 解决方法
- Appium安装使用总结
- Some words
- 应用Profiler优化SQL Server数据库系统
- Unity—Android通讯
- 《构建之法》阅读笔记04
- 免费SSL证书Let’s Encrypt
- IOS Socket 02-Socket基础知识
- iOS_学习代码混淆
- Linux下 运行Jmeter (含一个jmeter简单示例)
- iOS 每次登录进入首页
- 集合
- RxJava Retrofit2 链式请求(第N个请求的结果是第N+1个请求的参数)
- POJ 2773 Happy 2006 (二分+容斥)