Протокольно-ориентированное программирование
Вопрос
Что из перечисленного главное преимущество протоколов с расширениями перед наследованием классов?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- Протоколы позволяют хранить свойства с данными в расширениях
- Протоколы работают только с классами, поэтому вызовы быстрее
- Протоколы заменяют ARC и избавляют от циклов ссылок
- Поведение подмешивается к структурам, enum и чужим типамправильный ответ
Разбор
Наследование одно, работает только для классов и тянет за собой всю иерархию. Протоколы можно применять к любым типам, в том числе через ретроактивное расширение чужих, и комбинировать несколько. Хранимые свойства в расширениях запрещены, только вычисляемые. Протоколы не ограничены классами и к управлению памятью отношения не имеют.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Что выведет Swift: подкласс и реализация по умолчанию
Следующий вопрос
Ретроактивное соответствие и @retroactive
Термины по теме
Ещё по теме «Протоколы, POP и дженерики»
- Протокол делегата и weak
- Протокол с associatedtype как тип параметра
- Условное соответствие протоколу
- Метод из расширения протокола: какая реализация вызовется
- Ограничение дженерика Comparable
- Как ускорить вызов методов класса
- Что такое associatedtype
- Виды диспетчеризации в Swift