Приведи пример использования протокола в Swift.

«Приведи пример использования протокола в Swift.» — вопрос из категории Swift Core, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Протокол определяет интерфейс (требуемые свойства и методы), который должны реализовать соответствующие ему типы (классы, структуры, перечисления).

Пример:

// 1. Объявление протокола
protocol Vehicle {
    var numberOfWheels: Int { get }
    func startEngine()
}

// 2. Реализация протокола классом
class Car: Vehicle {
    let numberOfWheels = 4

    func startEngine() {
        print("Car engine started")
    }
}

// 3. Реализация протокола структурой
struct Bike: Vehicle {
    let numberOfWheels = 2

    func startEngine() {
        print("Bike pedaling started")
    }
}

// 4. Использование полиморфизма
let vehicles: [Vehicle] = [Car(), Bike()]
for vehicle in vehicles {
    print("Wheels: (vehicle.numberOfWheels)")
    vehicle.startEngine()
}

Почему это полезно:

  • Полиморфизм: Массив [Vehicle] может хранить объекты разных типов, но с общим интерфейсом.
  • Проектирование: Протоколы позволяют определять контракты и абстрагироваться от конкретной реализации.
  • Тестирование: Облегчают создание мок-объектов для модульного тестирования.