и посмотреть медиа
Swift | Interview Questions
и посмотреть медиа
Swift interview questions, tests and tasks for iOS developers in Telegram.
Swift interview questions, tests and tasks for iOS developers in Telegram.
AI bot for text-to-speech and voice cloning in Telegram. Create audio using neural network quickly and easily.
The channel is dedicated to preparing for Swift language interviews. It contains current questions, tests, practical tasks and vacancy information. Ideal for beginner and experienced iOS developers who want to refresh their knowledge and successfully pass interviews.
🤔 Какие виды диспетчеризации существуют в свифт? В Swift существует несколько видов диспетчеризации, которые определяют, как и когда вызываются методы или функции. Основные виды диспетчеризации включают статическую диспетчеризацию (static dispatch), диспетчеризацию по таблице виртуальных функций (vtable dispatch), диспетчеризацию по свидетелю (witness table dispatch) и динамическую диспетчеризацию (dynamic dispatch). Рассмотрим их подробнее: 🟠Статическая диспетчеризация (Static Dispatch) Вызов функции или метода определяется на этапе компиляции. Используется для функций и методов, которые не переопределяются в подклассах или не являются динамическими. Для структур, перечислений и final классов. struct MyStruct { func printMessage() { print("Hello from MyStruct") } } let instance = MyStruct() instance.printMessage() // Вызов определяется на этапе компиляции 🟠Диспетчеризация по таблице виртуальных функций (Vtable Dispatch) Используется для вызова методов класса, которые могут быть переопределены в подклассах. Виртуальная таблица (vtable) используется для определения, какой метод вызывать. Для классов и их подклассов. class BaseClass { func printMessage() { print("Hello from BaseClass") } } class SubClass: BaseClass { override func printMessage() { print("Hello from SubClass") } } let instance: BaseClass = SubClass() instance.printMessage() // Вызов определяется в runtime с использованием vtable 🟠Диспетчеризация по свидетелю (Witness Table Dispatch) Используется для вызова методов протоколов, реализованных типами. Таблица свидетелей (witness table) используется для определения, какой метод вызывать. Для типов, соответствующих протоколам. protocol MyProtocol { func printMessage() } struct MyStruct: MyProtocol { func printMessage() { print("Hello from MyStruct") } } let instance: MyProtocol = MyStruct() instance.printMessage() // Вызов определяется в runtime с использованием witness table 🟠Динамическая диспетчеризация (Dynamic Dispatch) Используется для вызова методов, отмеченных как dynamic или методов Objective-C. Метод определяется в runtime с использованием Objective-C runtime. Для методов, которые должны быть динамически разрешены в runtime, обычно для взаимодействия с Objective-C. import Foundation class MyClass: NSObject { @objc dynamic func printMessage() { print("Hello from MyClass") } } let instance = MyClass() instance.printMessage() // Вызов определяется в runtime с использованием Objective-C runtime Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиаOnly registered users can share their opinion.
Be the first to share your impression of this resource!