Sobes.tech
Back to questions
Junior — Middle
79

Можно ли определить функцию как необязательную часть интерфейса протокола?

Answer from AI

sobes.tech AI

В Swift можно определить методы протокола как необязательные, но только если протокол помечен как @objc и наследуется от NSObjectProtocol. Это связано с тем, что необязательные методы поддерживаются только в протоколах, совместимых с Objective-C. Для этого используется ключевое слово @objc optional.

Пример:

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

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