Я не уверен, мне кажется, что это какая-то ошибка или плохая реализация с расширением протокола в Swift 2.0.Swift 2, расширения протокола и ответыToSelector
У меня есть протокол A, протокол b, расширяющий протоколA и реализующие методы в расширении protocolB.
Я соответствовал экземпляру класса, чтобы соответствовать протоколу B, однако при проверке с помощью методов ответаSoSlector для методов протокола A/B результаты являются ложными.
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**
}
Следует ли сообщать об ошибке?
Вы должны указать ошибку. – Laurent
Yup. Вы уже зарегистрировали ошибку? :) – tadija
Да, действительно, это ошибка. Вы случайно его зарегистрировали? – csotiriou