У меня есть следующий класс:Почему я получаю «не поддерживает архивирование» в моем подклассе NSWindow?
@interface SpWindow : NSWindow <NSCoding> {
BOOL _editMode;
SpBgView *bgView;
} ...
... который я затем вызвать архив на. Мой метод кодирования заключается в следующем:
- (void) encodeWithCoder:(NSCoder *)aCoder {
NSLog(@"encodeWithCoder CALLED FOR SpWindow");
[super encodeWithCoder:aCoder];
NSLog(@"SpWindow's encodeWithCoder got past the super call");
[aCoder encodeObject:bgView forKey:@"bgView"];
[aCoder encodeBool:_editMode forKey:@"_editMode"];
}
... однако [super encodeWithCoder:aCoder];
бит приводит следующие данные в журнале консоли:
encodeWithCoder CALLED FOR SpWindow
<SpWindow: 0x20009f660> does not support archiving
*** -[NSKeyedArchiver finalize]: warning: NSKeyedArchiver finalized without having had -finishEncoding called on it.
... согласно документации NSWindow класс соответствует к NSCoding, поэтому я понятия не имею, почему я вижу эту проблему.
Любые идеи?
--- EDIT: Ссылка класс для NSWindow показывает:
Conforms to NSCoding (NSResponder)
... НЕ просто "Conforms to NSCoding"
- так что я думаю, это означает, что только биты NSResponder соответствуют NSCoding?
У меня есть и другое: - (ID) initWithCoder: (NSCoder *) aDecoder; - (void) encodeWithCoder: (NSCoder *) aCoder; ... учитывая, что я могу сказать, что мой encodeWithCoder получает вызов (через инструкцию NSLog я предполагаю, что это не проблема (но спасибо за это :-)) –