Method Dispatch в Swift (и не только) - Mad Brains Техно 5.07.19

preview_player
Показать описание
Техно - это внутренний еженедельный митап Mad Brains, на котором мы делимся опытом, знакомимся с актуальными технологиями и темами в мобильной разработке и не только.
Так как мы занимаемся и кроссплатформенной разработкой, и нативной (под обе платформы), на нашем канале выходят видео по разным технологиям. Найти то, что интересно именно тебе. легче всего на странице плейлистов.
Ссылки и материалы из наших новых видео, полезные статьи в телеграм-канале
Вакансии
Мы в соцсетях:
Рекомендации по теме
Комментарии
Автор

Отличный доклад и интересные дискуссии!

АрсенийЗолотарев-бщ
Автор

Решение о том, какая диспетчеризация использовать для экстеншенов протокола, связано с производительностью и безопасностью типов в Swift. Давайте разберемся подробнее.

1. **Производительность:**
- Статическая диспетчеризация обычно более эффективна с точки зрения производительности, чем динамическая диспетчеризация. При статической диспетчеризации компилятор может принять решение о том, какой метод вызывать на этапе компиляции, что позволяет избежать накладных расходов, связанных с поиском методов во время выполнения программы.

2. **Безопасность типов:**
- Swift является языком с сильной типизацией, что означает, что компилятор проверяет типы во время компиляции, чтобы предотвратить ошибки во время выполнения. Использование статической диспетчеризации для экстеншенов протоколов помогает поддерживать эту сильную типизацию, поскольку компилятор может гарантировать, что методы, определенные в экстеншене протокола, будут доступны для всех типов, реализующих этот протокол.

3. **Поддержка расширений в будущем:**
- Статическая диспетчеризация также облегчает добавление новых методов в протоколы в будущих версиях Swift без необходимости изменения реализации всех типов, реализующих этот протокол. Это связано с тем, что методы, добавленные в протоколы, автоматически становятся доступными для всех типов, реализующих эти протоколы.

Хотя динамическая диспетчеризация имеет свои преимущества, такие как возможность переопределения методов в подклассах и динамическая загрузка классов во время выполнения, для экстеншенов протоколов статическая диспетчеризация обычно более предпочтительна в контексте Swift из-за упомянутых выше причин.

forest-lll
Автор

как обычно у мб лучшие доклады на важные темы

Jeytery
Автор

final проставляется автоматически в момент компиляции только, если включен флаг whole module optimization, надо было уточнить)

nikitababonov
Автор

если я все правильно понимаю, то в табличку на 19:02 можно добавить третий столбец: Initial Declaration AND Extension, в которой будут 3 прочерка (у структур, классов и NSObject такое невозможно), и Table у протоколов. Тогда она станет исчерпывающей)

hahaha
Автор

Отличное видео! А можно ли где-нибудь скачать саму презентацию?

KoAn
Автор

20:03 возможно не доступно override так как super.walk вы не вызовите, а без этого нарушение правил Барбары Лисков

hashcat