Создает ли NSCoding автоматически экземпляр правильного производного класса

#objective-c #nscoding

#objective-c #nscoding

Вопрос:

Я хочу: количество производных классов, наследуемых от базы, которая соответствует NSCoding .

Когда я декодирую, нужно ли мне «что-то делать», чтобы позаботиться о создании экземпляра правильного производного класса, или NSCoding обрабатывает все это за меня?

Ответ №1:

Вам не нужно что-то делать для NSCoding, чтобы создать экземпляр правильного подкласса для вас. Он делает это автоматически.

Если вашему базовому классу необходимо закодировать или декодировать себя, не забудьте, что вам нужно вызвать super в ваших реализациях:

 - (void)encodeWithCoder:(NSCoder *)coder
{
  [super encodeWithCoder:coder];

  // And do your own encoding.
}
  

и

 - (instancetype)initWithCoder:(NSCoder *)aDecoder
{
  if(self = [super initWithCoder: aDecoder]) 
  {
    // Do your own decoding here.
  }
  return self;
}
  

Комментарии:

1. 🙂 Это «да» или «нет»?

2. Если вы не хотите перезаписывать или добавлять какие-то дополнительные свойства для сохранения в архиваторе, NSCoding сделает все это за вас

3. Круто, спасибо. Я отправлю редактирование, чтобы обобщить это, или вы бы предпочли?