@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