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.