Протоколы
Objective- C не могут иметь реализации по умолчанию. Протоколы
Objective- C могут иметь реальные дополнительные методы / свойства, в отличие от протоколов Swift, которые имеют только требуемые методы / свойства. Обходным путем для этого в Swift является использование реализации по умолчанию, однако, к сожалению, их нельзя увидеть в Objective- C.
Я бы предложил создать чистый протокол Swift и для всех Objective- C классы, которые хотят расширить это, напишите соответствие в Swift, затем создайте функции-оболочки @objc
в Swift, которые вызывают реализации протокола по умолчанию - если его нужно вызвать, если его не нужно вызывать, просто игнорируйте его.
Что-то вроде:
protocol SwiftProtocol {
func requiredFunc()
func optionalFunc()
}
extension SwiftProtocol {
func optionalFunc() {}
}
@objc extension ObjcClass: SwiftProtocol {
@objc func requiredFunc() {
print("do something")
}
// This will call the default implementation - can be omitted if you don't need to call the default implementation from Objective-C
@objc func objc_optionalFunc() {
optionalFunc()
}
}