Wiem, że podczas pisania metody initWithCoder podklasy obiektu implementującego NSCode trzeba wywołać super initWithCoder
(zamiast super init
), ale czy muszę wywoływać super encodeWithCoder
w implementacji encodeWithCoder?Czy konieczne jest wywoływanie [super encodeWithCoder] podczas podklasy obiektu, który implementuje NSCoding?
15
A
Odpowiedz
24
Jeśli dziedziczą z klasy, który obsługuje kodowanie, to na ogół adviseable używać [super encodeWithCoder:]
w swojej metodzie encodeWithCoder:
, jak [super initWithCoder:]
ma być stosowany w metodzie initWithCoder:
.
Dokumentacja:NSCoding Protocol Reference
referencyjny:http://www.cocoadev.com/index.pl?NSCoder
jeśli klasa dziedziczy z klasy, który odpowiada (NSObject nie odpowiada), a następnie należy zaliczyć [encodeWithCoder:] metoda.
// <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];
*/
}
Dziękuję dużo :) – XaitormanX
@XaitormanX Jesteś mile widziany, przyjacielu! :-) –