iOS runtime 根据类名获取属性的类型和名称
来源:互联网 发布:php referer 编辑:程序博客网 时间:2024/06/08 05:46
最近想简单封装一下FMDB,简单实现根据模型创建表的功能。
又研究了下runtime,解析property_getAttributes即可获得属性类型名称等
@protocol Aprotocol <NSObject>
@end
typedefvoid(^TestBlock)(int age);
@interface Student :NSObject
@property(nonatomic,copy)NSString<Aprotocol> *name ;
@property(nonatomic,assign)int score;
@property(nonatomic,assign)CGFloat cgfloat ;
@property(nonatomic,strong)NSArray *arr;
@property(nonatomic,strong)NSNumber *number;
@property(nonatomic,assign)float afloat;
@property(nonatomic,weak)id anId;
@property( strong)Student *stu;
@property(nonatomic,copy)TestBlock thisBlock;
@property BOOL aBool; //TB,V_aBool
@propertychar charDefault;
@property(retain)id idRetain;
@property CGRect rect ;
@end
[selfanilistMyClass:objc_getClass("Student")];
- (void)anilistMyClass:(Class)className{
u_int count;
objc_property_t * properties = class_copyPropertyList(className, &count);
for (int i=0; i<count; i++) {
objc_property_t property = properties[i];
NSLog(@"%@-->%@",getPropertyType(property),getPropertyName(property));
}
free(properties);
}
得到如下结果:
2015-09-20 10:22:55.130 RuntimeSample[6589:353450] NSString-->name
2015-09-20 10:22:55.130 RuntimeSample[6589:353450] int-->score
2015-09-20 10:22:55.131 RuntimeSample[6589:353450] double-->cgfloat
2015-09-20 10:22:55.131 RuntimeSample[6589:353450] NSArray-->arr
2015-09-20 10:22:55.131 RuntimeSample[6589:353450] NSNumber-->number
2015-09-20 10:22:55.132 RuntimeSample[6589:353450] float-->afloat
2015-09-20 10:22:55.132 RuntimeSample[6589:353450] id-->anId
2015-09-20 10:22:55.132 RuntimeSample[6589:353450] Student-->stu
2015-09-20 10:22:55.132 RuntimeSample[6589:353450] Block-->thisBlock
2015-09-20 10:22:55.132 RuntimeSample[6589:353450] BOOL-->aBool
2015-09-20 10:22:55.132 RuntimeSample[6589:353450] char-->charDefault
2015-09-20 10:22:55.133 RuntimeSample[6589:353450] id-->idRetain
2015-09-20 10:22:55.133 RuntimeSample[6589:353450] CGRect-->rect
- iOS runtime 根据类名获取属性的类型和名称
- ios 根据类名获取类名的属性
- C#根据类名获取属性名和DESCRIPTION值
- javabean根据属性名称获取对应的的getter/setter方法名
- Runtime-遍历类的成员名称和类型
- 根据不同的实例自动获取类名和属性(通用显示工具)
- C# 中反射获取某类的子类和根据类型名动态创建对象(转载)
- 利用Java反射根据属性名获取对象值和类型代码
- 根据包名获取应用图标和名称
- iOS获取当前app的名称和版本号 配置属性
- 根据名称获取对应进程名的ID
- iOS的runtime获取类的属性的数据类型
- Java中Bean对象根据属性名称获取和设置其值和Map的性能
- 根据表名创建实体类的字段和属性
- 根据表名创建实体类的字段和属性
- java反射获取类的属性名和属性值
- 通过反射获取属性名和属性类型
- 获取当前方法的名称空间、类名和方法名称
- 特殊方法求1~n的和
- 在Win7 x64中使用GNUstep和MinGW编写Objective-C的代码
- 第一篇:一个简单的聊天机器人
- 又一暴强的截图工具 ShareX
- 黑马程序员——Java语言介绍+环境搭建+经典Hello World
- iOS runtime 根据类名获取属性的类型和名称
- 白盒测试的一些方法
- makefile文件的编写
- UVa1709——Amalgamated Artichokes
- 数据库操作(fmdb多线程操作)
- java 备忘录界面设计--心路历程
- JDBC MySQL 连接符 附加属性 (编码及别名处理)
- 欢迎使用CSDN-markdown编辑器
- 代码