Учитывая следующее определение класса с сохраняющими свойствами:Почему для этого свойства требуется «сохранить»?
@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"];
}
Почему свойство URL в методе initWithCoder нужен «сохранить»:
-(id)initWithCoder:(NSCoder*)coder
{
url = [[coder decodeObjectForKey:@"url"] retain];
source = [coder decodeObjectForKey:@"source"];
NSLog(@"got url=%@\n", url);
return self;
}
В частности, почему не синтезированный " get url "сохранить объект? (Я предполагаю, что исходное свойство также потребуется сохранить).
Действительно! У меня такое чувство, что это будет укусить меня довольно часто. Спасибо за ваш ответ. – Justicle
Мое удовольствие. Сначала нужно привыкнуть. После того, как вы это делаете какое-то время, это становится второй натурой :) –
Это одна из причин, по которой мне нравится использовать префикс _ для частных переменных экземпляра, это очень легко понять, когда вы используете переменную экземпляра против всего остального. –