runtime 相关博文
- Ivar 详解
- Objective-C类成员变量深度剖析
- 关于type encodings的理解--runtime programming guide
- Objective-C 类型编码
- iOS archive(归档)的总结
- Python正则表达式指南
- Python遍历文件夹和读写文件的方法
runtime 动态设置变量。。。当变量类型为 基础数据类型时 ,采用 get 方法得到的实例变量值是不正确的,但是通过runtime 可以获取正确的值,
难道是 runtime 不触发 kvc ??? 抽空去看一下kvc 文档
归档的用法
把代码抽象成宏, 在每句代码后面加入斜杠 \ 就好
源代码
unsigned int count = 0;
Ivar *ivars = class_copyIvarList([Movie class], &count);
for (int i = 0; i<count; i++) {
// 取出i位置对应的成员变量
Ivar ivar = ivars[i];
// 查看成员变量
const char *name = ivar_getName(ivar);
// 归档
NSString *key = [NSString stringWithUTF8String:name];
id value = [self valueForKey:key];
[encoder encodeObject:value forKey:key];
}
free(ivars);
抽象成宏
#define encodeRuntime(A) \
\
unsigned int count = 0;\
Ivar *ivars = class_copyIvarList([Movie class], &count);\
for (int i = 0; i<count; i++) {\
Ivar ivar = ivars[i];\
const char *name = ivar_getName(ivar);\
NSString *key = [NSString stringWithUTF8String:name];\
id value = [self valueForKey:key];\
[encoder encodeObject:value forKey:key];\
}\
free(ivars);\
\










网友评论