Я не могу скомпилировать следующий код, и я не знаю, почему. Я упростил это до этого ради удобочитаемости.
@objc protocol MyProtocol {
func someMethod() -> String
}
extension MyProtocol {
func someMethod() -> String {
return "Foo"
}
}
@objc class MyClass: NSObject, MyProtocol {
}
let obj: MyProtocol = MyClass()
obj.someMethod()
Что странно, так это то, что если я объявлю obj типом MyClass, вот так:
let obj: MyClass = MyClass()
Это работает нормально. Это также работает, если я удалю @objc из определения протокола. Экземпляры MyClass будут использоваться Objective-C, поэтому мне нужно использовать @objc.
Заранее благодарю за любую помощь.