iOS Runtime应用之自动归档 发表于 2018-11-02 归档12345678910111213- (void)encodeWithCoder:(NSCoder *)aCoder{// 获取类的所有成员变量unsigned int count = 0;Ivar *ivars = class_copyIvarList([self 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];[aCoder encodeObject:[self valueForKey:key] forKey:key];}} 解档123456789101112131415- (id)initWithCoder:(NSCoder *)aDecoder {if (self = [super init]) {// 获取类的所有成员变量unsigned int count = 0;Ivar *ivars = class_copyIvarList([self 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];[self setValue:[aDecoder decodeObjectForKey:key] forKey:key];}}return self;} end