iOS开发之深入探讨runtime机制02-runtime的简单使用
2014-06-22 17:03
309 查看
runtime机制为我们提供了一系列的方法让我们可以在程序运行时动态修改类、对象中的所有属性、方法。
下面就介绍运行时一种很常见的使用方式,字典转模型。当然,你可能会说,“我用KVO直接 setValuesForKeysWithDictionary: 传入一个字典一样可以快速将字典转模型啊”,但是这种方法有它的弊端,只有遍历某个模型中所有的成员变量,然后通过成员变量从字典中取出对应的值并赋值最为稳妥,由于篇幅有限,这里暂且不讨论那么多,你权且当作多认识一种数据转模型的方式,以及初步认识一下runtime的强大。
1、假设我定义了一个类(随便写的,不要纠结名字,.m文件啥也没写);
2、在其它文件使用这个类,注意:要使用运行时,必须先包含
#import
下面,我将会通过一小段代码来获取到这个类中所有的成员变量
打印结果
可见,通过这几句简单的代码就可以获取到某个类中所有变量的名称和类型,然后通过object_setIvar()方法为具体某个对象的某个成员变量赋值。
下面就介绍运行时一种很常见的使用方式,字典转模型。当然,你可能会说,“我用KVO直接 setValuesForKeysWithDictionary: 传入一个字典一样可以快速将字典转模型啊”,但是这种方法有它的弊端,只有遍历某个模型中所有的成员变量,然后通过成员变量从字典中取出对应的值并赋值最为稳妥,由于篇幅有限,这里暂且不讨论那么多,你权且当作多认识一种数据转模型的方式,以及初步认识一下runtime的强大。
1、假设我定义了一个类(随便写的,不要纠结名字,.m文件啥也没写);
@interface Lender : NSObject{ CGFloat height; } @property (nonatomic, copy) NSString *name; @property (nonatomic, strong) NSNumber *age; @property (nonatomic, assign) int no; @end
2、在其它文件使用这个类,注意:要使用运行时,必须先包含
#import
下面,我将会通过一小段代码来获取到这个类中所有的成员变量
unsigned int outCount = 0; Ivar *vars = class_copyIvarList([Lender class], &outCount); // 获取到所有的变量列表 // 遍历所有的成员变量 for (int i = 0; i < outCount; i++) { Ivar ivar = vars[i]; // 取出第i个位置的成员变量 const char *propertyName = ivar_getName(ivar); // 通过变量获取变量名 const char *propertyType = ivar_getTypeEncoding(ivar); // 获取变量编码类型 printf("---%s--%s\n", propertyName, propertyType); }
打印结果
---height--f ---_name--@"NSString" ---_age--@"NSNumber" ---_no--i
可见,通过这几句简单的代码就可以获取到某个类中所有变量的名称和类型,然后通过object_setIvar()方法为具体某个对象的某个成员变量赋值。
相关文章推荐
- iOS开发之深入探讨runtime机制02-runtime的简单使用
- iOS开发之深入探讨runtime机制02-runtime的简单使用
- iOS开发之深入探讨runtime机制01-类与对象
- iOS-浅谈runtime运行时机制02-runtime简单使用
- iOS-浅谈runtime运行时机制02-runtime简单使用
- iOS-浅谈runtime运行时机制02-runtime简单使用
- iOS开发之深入探讨runtime机制03-runtime的方法与消息
- iOS-浅谈runtime运行时机制02-runtime简单使用
- iOS-浅谈runtime运行时机制02-runtime简单使用
- iOS-浅谈runtime运行时机制02-runtime简单使用
- iOS开发之深入探讨runtime机制01-类与对象
- iOS开发之深入探讨runtime机制01-类与对象
- iOS开发之Runtime机制深入解析
- iOS开发:runtime原理简单分析和基本使用场景
- iOS开发之Runtime机制深入解析
- iOS-浅谈runtime运行时机制-runtime简单使用(转)
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- ZT Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景]
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)