@implementa...">
美文网首页
RunTime解归档:wkRunTimeEncode.m

RunTime解归档:wkRunTimeEncode.m

作者: 26b5cc676194 | 来源:发表于2016-01-19 13:25 被阅读62次

#import "WKPerson.h"

#import <objc/runtime.h>

@implementation WKPerson

- (void)encodeWithCoder:(NSCoder *)encoder

{

unsigned int count = 0;

Ivar *ivars = class_copyIvarList([WKPerson 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);

}

- (id)initWithCoder:(NSCoder *)decoder

{

if (self = [super init]) {

unsigned int count = 0;

Ivar *ivars = class_copyIvarList([WKPerson 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 = [decoder decodeObjectForKey:key];

// 设置到成员变量身上

[self setValue:value forKey:key];

}

free(ivars);

}

return self;

}

@end

# via@新浪微博:王星凯SoWhat

相关文章

网友评论

      本文标题:RunTime解归档:wkRunTimeEncode.m

      本文链接:https://www.haomeiwen.com/subject/ragkkttx.html