是否可以从 Objective-C 调用 Swift 协议扩展中定义的方法?
例如:
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 中不可见。编译器抛出错误“'IceCream' 的无可见 @interface 声明选择器 ...”。
在我的配置中,如果方法是直接在 Swift 对象的实现中定义的,那么一切都会按预期进行。IE:
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)"
}
}
}