Sobes.tech
Back to questions
Junior — Middle
81

Возможна ли реализация необязательных методов в определении протокола?

Companies where asked
Itexus

Answer from AI

sobes.tech AI

В Swift протоколы могут содержать необязательные методы, но только если протокол объявлен с помощью @objc и ограничен классами (т.е. наследуется от AnyObject). Это связано с тем, что необязательные методы реализуются через механизм Objective-C runtime.

Пример:

@objc protocol MyProtocol {
    @objc optional func optionalMethod()
    func requiredMethod()
}

class MyClass: NSObject, MyProtocol {
    func requiredMethod() {
        print("Обязательный метод")
    }
    // optionalMethod реализовывать необязательно
}

Если протокол не помечен @objc, все методы считаются обязательными и должны быть реализованы.

Таким образом, реализация необязательных методов в протоколах возможна, но с ограничениями, связанными с использованием Objective-C runtime.