STANFORD UNIVERSITY: Разработка iOS 8 приложений с Swift CS193P
Лекция 4: Больше Swift и Foundation Frameworks
Профессор Пол Хэгарти (Paul Hegarty)
Лекцию на английском языке и слайды можно найти на iTunes название “4. More Swift and Foundation Frameworks”.
Русскоязычный неавторизованный конспект лекций принадлежит сайту bestkora.com/IosDeveloper
Начало: 1 — ая часть лекции (0 — 37 минут) находится здесь.
Этот документ: продолжение: 2 — ая часть лекции (37 минута — конец )
Примечание переводчика. В документе почти каждый слайд точно переводится на русский язык. Текст перевода располагается между двумя горизонтальными линиями сразу вслед за слайдом. Далее следует речь профессора, который повторяет то, что изображено на слайдах, а иногда и сам повторяет одну и ту же мысль в разных вариантах. Этот документ содержит живую речь и не подвергался глубокому редактированию.
————————————- 37 -ая минута лекции ————————-
Давайте поговорим о наследовании init. Потому что это также сложно. Ниже представлены правила при наследовании init.
Инициализация
- Наследование init.
Если вы не реализуете никакие назначенные inits, то вы унаследуете все назначенные inits вашего superclass
Если вы переопределите (override) все назначенные inits вашего superclass, то вы унаследуете все convenience inits вашего superclass
Если вы не реализуете ни одного inits в, то вы унаследуете все inits вашего superclass
Любой inits, унаследованный по этим правилам, должен удовлетворять всем правилам на предыдущем слайде
- Required init.
Класс может пометить один или более init методов как required
Любой subclass должен реализовать эти упомянутые методы ( даже если они были унаследованы по приведенным выше правилам)
Например, ваш superclass имеет три назначенных (designated) инициализатора с различными аргументами. Если вы переопределите (override) все, то тогда вы наследуете все convenience inits вашего superclass.
Также если вы не реализуете ничего, вы наследуете все назначенные (designated) инициализаторы и все convenience inits вашего superclass в этом случае.
Это правила наследования. Людей это ставит в тупик : » Я реализовал один инициализатор, а почему другие не работают?»
Как только вы реализовали один назначенный (designated) инициализатор, вы не наследуете остальные. Либо все, либо ничего, если дело касается назначенных инициализаторов (designateds).
В отношении convenience inits тоже либо все, либо ничего.
Потому что вы должны либо реализовать все, либо не реализовать ничего, чтобы получить в наследство convenience inits.
Любой init, унаследованный по этим правилам должен принимать в внимание правила на предыдущем слайде.
Возможно иметь то, что называется required init. Если вы поставили ключевое слово required перед init, то это означает, что subclasses должны реализовать этот init.
Вы можете наследовать required init по правилам, указанным выше.
Если вы не реализовали ни одного назначенного инициализатор, то вы наследуете все, в том числе и required init. Это нормально. Но если вы реализовали какой-то из назначенных инициализаторов, то вы должны выполнить и required inits.






