我知道,在编写实现nscoding的对象的子类的initWithcoder方法时,必须调用superinitWithCoder(而不是super init),但在encodeWithcoder的实现中是否必须调用super encodeWithCoder

最佳答案

如果您从支持编码的类继承,通常可以在[super encodeWithCoder:]方法中使用encodeWithCoder:,在[super initWithCoder:]方法中使用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];
    */
}

关于objective-c - 在子类化实现NSCoding的对象时,是否需要调用[super encodeWithCoder]?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10041000/

10-12 05:41