У меня есть следующий класс:
@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?