NSCoding, archiving
Суть
Archiving — сериализация графа объектов в NSData и обратно с помощью NSKeyedArchiver/NSKeyedUnarchiver. Чтобы класс мог быть заархивирован, он реализует протокол NSCoding:
-encodeWithCoder:(NSCoder *)coder— записать состояние по ключам;-initWithCoder:(NSCoder *)coder— восстановить.
NSCoder — абстрактный класс «кодировщика»; keyed-архиватор пишет пары ключ → значение, что позволяет менять набор полей между версиями (старые ключи просто игнорируются, новых нет — decodeObjectForKey: вернёт nil). Так хранятся UIView в storyboard/XIB, state restoration, NSUserDefaults для нестандартных типов, кэши на диске.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep