15

我知道,当您编写实现 NSCoding 的对象的子类的 initWithCoder 方法时,您必须调用 super initWithCoder(而不是super init),但是我必须调用super encodeWithCoderencodeWithCoder 的实现吗?

4

1 回答 1

24

如果您从支持编码的类继承,通常建议[super encodeWithCoder:]在您的encodeWithCoder:方法中使用,尽可能多[super initWithCoder:]地在initWithCoder:方法中使用。

文档: NSCoding 协议参考

参考: http ://www.cocoadev.com/index.pl?NSCoder

如果该类继承自符合(NSObject 不符合)的类,那么您应该包含 [encodeWithCoder:] 方法。

//  <NSCoding> protocol methods

-(void)encodeWithCoder:(NSCoder*)coder
{
    [super encodeWithCoder:coder];
    /*
    [coder encodeObject: theNSStringInstanceVariable];
    [coder encodeObject: theNSDictionaryInstanceVariable];
    [coder encodeValueOfObjCType:@encode(BOOL) at:&theBooleanInstanceVariable];
    [coder encodeValueOfObjCType:@encode(float) at:&theFloatInstanceVariable];
    */
}
于 2012-04-06T08:44:33.963 回答