【发布时间】:2009-11-04 14:34:09
【问题描述】:
我已经创建了一个符合协议的类。所以我实现了一个这样的init方法:
- (id)initWithCoder:(NSCoder*)decoder {
if ((self = [super init])) {
self.someIvarObject = [decoder decodeObjectForKey:kObjectKey];
}
return self;
}
当然我也实现了-(void)encodeWithCoder:(NSCoder*)encoder 方法。
我现在还没有想好如何归档这个对象。我是否必须创建我的对象的实例,然后只需调用 -initWithCoder: 并提供适当的 NSCoder 对象?
我问的原因是我需要知道是否可以在这个初始化方法中添加另一个参数。当我自己调用它时,我想应该没问题。虽然我必须使用正确的协议签名来实现-(void)encodeWithCoder:(NSCoder*)encoder。
也许有人可以提供一个小例子来快速显示对象是如何取消归档的?那太好了!
编辑:这是我尝试做的更详细的示例。还不知道这是否适用于这样的可归档对象...
- (id)initWithCoder:(NSCoder*)decoder somethingSpecial:(Special*)special {
if ((self = [super init])) {
self.someIvarObject = [decoder decodeObjectForKey:kObjectKey];
self.somethingSpecial = special;
}
return self;
}
- (id)initWithCoder:(NSCoder*)decoder {
return [self initWithCoder:decoder decimalCalculator:nil];
}
【问题讨论】:
标签: iphone cocoa-touch