Thanks, the second had occurred to me, but felt a little too much like in practice it would make the code harder to understand.
On Fri, Jun 2, 2017 at 9:58 PM, Zhao Xin <owe...@gmail.com> wrote: > I found two workarounds. > > 1. > > protocol Foo: class { > > func bar() > > } > > > class Base:Foo { > > @objc func bar() { > > print("bar") > > } > > } > > > class Baz: Base { > > override init() { > > super.init() > > let tapRecognizer = UITapGestureRecognizer(target: self, action: > #selector(bar)) > > } > > } > > 2. > > protocol Foo: class { > > func bar() > > } > > > extension Foo { > > func bar() { > > print("bar") > > } > > } > > > class Baz: Foo { > > init() { > > let tapRecognizer = UITapGestureRecognizer(target: self, action: > #selector(delegate)) > > } > > > > @objc func delegate() { > > bar() > > } > > } > > > Zhao Xin > > > > > > > On Sat, Jun 3, 2017 at 10:35 AM, Nate Birkholz via swift-users < > swift-users@swift.org> wrote: > >> 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 >> >> > -- Nate Birkholz
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users