Sobes.tech
Назад к вопросам
Junior — Middle
64

Являются ли все функции, объявленные в протоколе, обязательными к реализации для класса, его реализующего?

Компании, где спрашивали
Финам

Ответ от нейросети

sobes.tech AI

В Swift все функции, объявленные в протоколе, по умолчанию обязательны к реализации классом, который этот протокол принимает. Однако, если в протоколе указаны методы с реализацией по умолчанию через расширение (extension), то реализация таких методов в классе становится необязательной.

Пример:

protocol MyProtocol {
    func requiredMethod()
    func optionalMethod()
}

extension MyProtocol {
    func optionalMethod() {
        print("Default implementation")
    }
}

class MyClass: MyProtocol {
    func requiredMethod() {
        print("Implemented required method")
    }
    // optionalMethod реализовывать не обязательно
}

Таким образом, обязательными являются только методы без реализации по умолчанию в протоколе.