您好,登錄后才能下訂單哦!
/* NSCoder functions taken from:
* http://davedelong.com/blog/2009/04/13/aspect-oriented-programming-objective-c
*/
- (id) initWithCoder:(NSCoder *)decoder {
if ([super respondsToSelector:@selector(initWithCoder:)] && ![self isKindOfClass:[super class]]) {
self = [super performSelector:@selector(initWithCoder:) withObject:decoder];
} else {
self = [super init];
}
if (self == nil) { return nil; }
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
unsigned int numIvars = 0;
Ivar *ivars = class_copyIvarList([self class], &numIvars);
for(int i = 0; i < numIvars; i++) {
Ivar thisIvar = ivars[i];
NSString *key = [NSString stringWithUTF8String:ivar_getName(thisIvar)];
id value = [decoder decodeObjectForKey:key];
if (value == nil) { value = [NSNumber numberWithFloat:0.0]; }
[self setValue:value forKey:key];
}
if (numIvars > 0) { free(ivars); }
[pool drain];
return self;
}
- (void) encodeWithCoder:(NSCoder *)encoder {
if ([super respondsToSelector:@selector(encodeWithCoder:)] && ![self isKindOfClass:[super class]]) {
[super performSelector:@selector(encodeWithCoder:) withObject:encoder];
}
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
unsigned int numIvars = 0;
Ivar *ivars = class_copyIvarList([self class], &numIvars);
for (int i = 0; i < numIvars; i++) {
Ivar thisIvar = ivars[i];
NSString *key = [NSString stringWithUTF8String:ivar_getName(thisIvar)];
id value = [self valueForKey:key];
[encoder encodeObject:value forKey:key];
}
if (numIvars > 0) { free(ivars); }
[pool drain];
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。