我知道当你编写实现NSCoding的对象的子类的initWithCoder方法时,你必须调用super initWithCoder
(而不是super init
),但是我必须调用{{1在encodeWithCoder的实现中?
答案 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];
*/
}