Можно ли вызывать методы, определенные в расширении протокола в Swift, от Objective-C?
Например:
protocol Product {
var price:Int { get }
var priceString:String { get }
}
extension Product {
var priceString:String {
get {
return "$\(price)"
}
}
}
class IceCream : Product {
var price:Int {
get {
return 2
}
}
}
Строка цены экземпляра IceCream
равна '$ 2', и к ней можно получить доступ в Swift, однако метод не отображается в Objective-C. Компилятор выдает ошибку "No visible @interface для" IceCream "объявляет селектор...".
В моей конфигурации, если метод определен непосредственно в реализации объекта Swift, все работает так, как ожидалось. то есть:.
protocol Product {
var price:Int { get }
var priceString:String { get }
}
class IceCream : Product {
var price:Int {
get {
return 2
}
}
var priceString:String {
get {
return "$\(price)"
}
}
}