Вы находитесь на странице: 1из 6

INITIALIZER

Заметки
• initializer (инициализатор) – аналог конструктора в Java – создание объекта с заданными stored properties

• Главная цель инициализатора – заполнить все свойства значениями (даже если это nil), чтобы все свойства объекта
были инициализированы

• Более строгий подход по сравнению с Java

• Константы – можно заполнять через init (после этого значение поменять нельзя) – многие новички думают, что
константу нужно заполнять сразу при объявлении
Заметки
• Понятие «synthesized initializers» (синтезированные) - инициализаторы, которые автоматические создает
компилятор

• Компилятор может создавать автоматически 2 инициализатора:


• default initializer (без параметров) - если все свойства при объявлении принимают значение по-умолчанию (или
свойств вообще нет)
• memberwise initializer (почленный) – заполняет все свойства, даже те, которые получают значения при
объявлении

• Также можно создавать свои инициализаторы с любыми параметрами – главное, чтобы в итоге были заполнены все
свойства объекта

• Если создан собственный initializer – автоматические уже не создаются

• * В уроках сокращенно можем называть init, чтобы не писать полностью initializer или инициализатор
Failable (Optional)
• Инициализатор тоже может быть optional:

• init?

• init!
Плагин
• Генератор (чтобы вручную не создавать нужные init)
• https://github.com/rjoudrey/swift-init-generator
Домашнее задание
• Установить и попробовать генератор
• https://github.com/rjoudrey/swift-init-generator

• Прочитать до абзаца «Class Inheritance and Initialization»


• https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.ht
ml

• Прочитать про деинициализатор:


• https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Deinitialization.
html