Добавил презентацию в репозиторий, ссылка на который указана внизу на слайде на 37:21. Это был мой первый доклад - надеюсь, все нюансы съемки и питча вы более-менее преодолеете и досмотрите до конца!
Я не понимаю, почему в классах используется virtual table , но для extension этого класса direct dispatch??? Как так, потомок же нашего класса точно также может вызвать функцию которую мы объявили в экстеншене родителя, в чем вообще отличие-то ?
Для классов на этапе компиляции неизвестно для объекта родителя или потомка будет вызван метод. Приходится в рантайме выискивать нужный метод. Экстеншен это как хелпер к классу. Он лежит отдельно от него и адреса всех методов известны. И для родителя и для потомка вызывается один и тот же метод, адрес которого известен на этапе компиляции.
Отличие в том, что потомок не может переопределись этот метод, он может просто его вызвать. И это работает не только с классами, а со всеми объектами вызывающими методы этого протокола. Реализация метода в экстеншене не измениться. Поэтому и direct dispatch.
@@TheUebishe А обращение к собственным проперти внутри extension метода как будут происходить? Если для класса проперти через виртуальную таблицу определяются. Не будет ли тут Direct dispatch -> VTable?
Классный доклад но можно больше показывать слайды а не докладчика. Он очень красивый но хотелось бы смотреть на то о чем рассказывают . Спасибо !
Потрясающая запись: докладчик что то рассказывает по слайду - мы смотрим на докладчика, очень интересно. Лучшая запись, оператору/монтажеру мои овации
Добавил презентацию в репозиторий, ссылка на который указана внизу на слайде на 37:21. Это был мой первый доклад - надеюсь, все нюансы съемки и питча вы более-менее преодолеете и досмотрите до конца!
Можете, пожалуйста, обновить ссылку на слайды? Она уже неактуальна
Ссылка со слайдами не доступна больше(
поделитесь если есть у кого плз
Спасибо огромное!
Ссылка на слайды протухла(
классный доклад! спасибо!
Я не понимаю, почему в классах используется virtual table , но для extension этого класса direct dispatch??? Как так, потомок же нашего класса точно также может вызвать функцию которую мы объявили в экстеншене родителя, в чем вообще отличие-то ?
Для классов на этапе компиляции неизвестно для объекта родителя или потомка будет вызван метод. Приходится в рантайме выискивать нужный метод. Экстеншен это как хелпер к классу. Он лежит отдельно от него и адреса всех методов известны. И для родителя и для потомка вызывается один и тот же метод, адрес которого известен на этапе компиляции.
Отличие в том, что потомок не может переопределись этот метод, он может просто его вызвать. И это работает не только с классами, а со всеми объектами вызывающими методы этого протокола. Реализация метода в экстеншене не измениться. Поэтому и direct dispatch.
Nikita Fedorenko а если добавить @objc перед методом в расширении, то его можно уже переопределить, какая диспечерезация будет ?
@@zakharbabkin3588 как в obj-c - message dispatch c помощью objc_msgSend(
@@TheUebishe А обращение к собственным проперти внутри extension метода как будут происходить? Если для класса проперти через виртуальную таблицу определяются. Не будет ли тут Direct dispatch -> VTable?
Как он полиморфизм отделил от наследования, совсем не понял
Соответственно соответствует :.(
Плохо объясняет