在子类化实现NSCoding的对象时是否需要调用[super encodeWithCoder]?

时间:2012-04-06 08:30:00

标签: objective-c cocoa nscoding

我知道当你编写实现NSCoding的对象的子类的initWithCoder方法时,你必须调用super initWithCoder(而不是super init),但是我必须调用{{1在encodeWithCoder的实现中?

1 个答案:

答案 0 :(得分:24)

如果您从支持编码的类继承,通常建议您在[super encodeWithCoder:]方法中使用encodeWithCoder:[super initWithCoder:]将在{{1}中使用initWithCoder:方法。

文档: NSCoding Protocol Reference

参考: 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];
    */
}