protocol Foo: class { func bar() } extension Foo { func bar() { print("bar") } }
class Baz: Foo { init() { let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(bar)) } } the #selector tells me: "Argument of '#selector' refers to instance method 'bar()' that is not exposed to Objective-C" and asks me to add @objc to the method definition. Adding @objc to the method tells me: "@objc can only be used with members of classes, @objc protocols, and concrete extensions of classes" Adding @objc to the protocol doesn't fix it, just introduces new issues. "dynamic" cannot be applied to a protocol, so cannot be used alternatively. Is there a way to get around this? If a method is called by a gesture recognizer, is there no way to have a default protocol implementation? I'd like to use default implementations if possible to make my code more DRY. Is there a roadmap/plan for swift-native selector dispatch? Thanks. I look forward to the inevitable reply revealing the dumb thing I missed. :) -- Nate Birkholz
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users