我不确定,但我认为这可能是Swift 2.0中协议扩展的某种错误或不良实现。
我有protocolA和protocolB,protocolB继承自protocolA并在protocolB扩展中实现方法。
我已经使一个类实例符合protocolB,但是当通过respondsToSelector检查protocolA/B方法时,结果为false。
import Cocoa
import XCPlayground
protocol ProtocolA : NSObjectProtocol {
func functionA()
}
protocol ProtocolB : ProtocolA {
func functionB()
}
extension ProtocolB {
func functionA() {
print("Passed functionA")
}
func functionB() {
print("Passed functionB")
}
}
class TestClass : NSObject, ProtocolB {
override init () {
}
}
var instance:TestClass = TestClass()
instance.functionA() // Calls code OK..
if instance.respondsToSelector("functionA") {
print("Responds to functionA") // **False, never passing here**
}
if instance.respondsToSelector("functionB") {
print("Responds to functionB") // **False, never passing here**
}
应该报告为一个错误吗?
respondsToSelector
无法工作,也永远无法与协议扩展一同工作。 - emrys57