iOS开发之深入探讨runtime机制02-runtime的简单使用
来源:互联网 发布:highcharts zh ch.js 编辑:程序博客网 时间:2024/05/16 04:53
runtime机制为我们提供了一系列的方法让我们可以在程序运行时动态修改类、对象中的所有属性、方法。
下面就介绍运行时一种很常见的使用方式,字典转模型。当然,你可能会说,“我用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 <objc/message.h>
下面,我将会通过一小段代码来获取到这个类中所有的成员变量
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()方法为具体某个对象的某个成员变量赋值。
0 0
- iOS开发之深入探讨runtime机制02-runtime的简单使用
- iOS开发之深入探讨runtime机制03-runtime的方法与消息
- iOS开发之Runtime机制深入解析
- iOS开发之深入探讨runtime机制01-类与对象
- iOS之runtime的简单使用
- 【iOS开发】runtime机制
- ios-Runtime的简单使用
- iOS开发之旅--揭秘Runtime机制
- iOS开发 -OC之 runtime机制
- 深入介绍iOS Runtime机制
- IOS runtime简单使用
- 通过Runtime探讨iOS的消息转发机制
- iOS runTime机制简单理解
- iOS-浅谈runtime运行时机制02-runtime简单使用
- iOS-浅谈runtime运行时机制02-runtime简单使用
- iOS-浅谈runtime运行时机制02-runtime简单使用
- iOS-浅谈runtime运行时机制02-runtime简单使用
- iOS简单runtime封装fmdb的使用
- Spring读取properties文件出现乱码的解决方法
- windows端口查询与状态详解
- hdu 5171(矩阵快速幂)
- Android客户端与PC服务器通过socket进行交互实例
- 获取Android设备的方向 -- gsensor
- iOS开发之深入探讨runtime机制02-runtime的简单使用
- 手动修改adb devices的设备ID号
- java ThreadLocal源码详解及用法
- Python--简单的端口扫描器(二)
- AngularJS资源合集[备忘]
- struts2的核心和工作原理
- scala和java通过JNI调用C++程序例子
- ios ios7导航栏返回键设置
- maven使用中遇到的小问题以及解决办法