在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 for 'IceCream' declares the selector ...”。在我的配置中,如果直接在 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)"
}
}
}