Biorąc pod uwagę następującą definicję klasy z zachowują właściwości:Dlaczego ta właściwość wymaga "zachowywania"?
@interface FeedEntry : NSObject<NSCoding>
{
NSURL* url;
NSData* source;
}
@property (retain) NSURL* url;
@property (retain) NSData* source;
@end
@implementation FeedEntry
@synthesize url;
@synthesize source;
-(void)encodeWithCoder:(NSCoder*)coder
{
[coder encodeObject:url forKey:@"url"];
[coder encodeObject:source forKey:@"source"];
}
Dlaczego właściwość url w metodzie initWithCoder potrzebne „zachować”:
-(id)initWithCoder:(NSCoder*)coder
{
url = [[coder decodeObjectForKey:@"url"] retain];
source = [coder decodeObjectForKey:@"source"];
NSLog(@"got url=%@\n", url);
return self;
}
szczególności, dlaczego nie zsyntetyzowany " get url "metoda zatrzymania obiektu? (Domyślam się, że właściwość źródłowa również będzie wymagać zachowania).
Rzeczywiście! Mam wrażenie, że to dość często mnie gryzie. Dzięki za odpowiedź. – Justicle
Moja przyjemność. Na początku trzeba się przyzwyczaić. Gdy robisz to od jakiegoś czasu, staje się on drugą naturą :) –
To jeden z powodów, dla których lubię używać przedrostka _ na zmiennych prywatnych instancji, bardzo łatwo jest określić, kiedy używasz zmiennej instancji vs cokolwiek innego. –