Nie jestem pewien, wydaje mi się, że jest to jakiś błąd lub zła implementacja z rozszerzeniami protokołów w Swift 2.0.Swift 2, rozszerzenia protokołów i odpowiedziToSelector
Mam protokół A, protokół B rozszerzający protokół A i metody implementacji w rozszerzeniu protocolB.
Poprawiłem instancję klasy, aby była zgodna z protokołem B, jednak podczas sprawdzania przez respondsToSelector dla metod protokołu A/B wyniki są fałszywe.
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**
}
Należy zgłosić jako błąd?
Powinieneś zgłosić błąd. – Laurent
Yup. Czy już zgłosiłeś błąd? :) – tadija
Tak, rzeczywiście jest to błąd. Czy zdarzyło ci się go złożyć? – csotiriou