Метод init
сначала присваивает неявную локальную переменную self
(self
является одним из двух скрытых аргументов, передаваемых в методы) возвращаемому значению назначенного инициализатора суперкласса .Причина этого заключается в том, что инициализаторы могут возвращать объект, отличный от того, который получил сообщение, например, когда невозможно правильно инициализировать получатель или когда возвращается существующий экземпляр, чтобы избежать необходимости инициализировать новый.
После установки self
оператор if
гарантирует, что переменные экземпляра инициализируются только в том случае, если self
не nil
.Если self
равно nil
, доступ к памяти для переменных экземпляра может быть ошибкой.Очень немногие классы возвращают nil
, но все же это допустимое возвращаемое значение.
Это описано в Реализация инициализатора .