Из iOS Руководство по программированию ресурсов
В iPhone OS любой объект, который соответствует протоколу NSCoding, инициализируется с использованием метода initWithCoder:
. Это включает в себя все подклассы UIView
и UIViewController
, независимо от того, являются ли они частью библиотеки Interface Builder по умолчанию или заданными вами пользовательскими классами.
Думайте об этом так: назначенный инициализатор вызывается, когда ваш контроллер представления впервые создается в Интерфейсном Разработчике. Затем, когда вы сохраняете файл пера, экземпляр контроллера представления сохраняется в файле. Позже, когда перо загружается, экземпляр воссоздается из кончика.
Поскольку он воссоздается, а не создается впервые, используется другой метод инициализации. Этот метод (-initWithCoder:
) восстанавливает состояние объекта, используя значения из файла пера, которые могут включать в себя настройки для свойств, помимо тех, которые были установлены назначенным инициализатором. Этот механизм основан на протоколе NSCoding
, который позволяет ему работать в общем для многих различных классов.