您好,登錄后才能下訂單哦!
/* 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];
}
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。