对 Swift 来说很陌生。如果(a)设置了委托并且(b)实现了该方法,那么如何获得调用可选委托方法的最简洁/惯用的语法。
我知道?
可以扮演这个角色(例如self.delegate.foo?()
),但是当我尝试调用具有多个参数的 ObjC 委托方法并返回一个我关心捕获的值(Bool)时,我很难获得正确的语法(我想区分“方法未实现”和“方法已实现并返回 false”)。
这是一个例子。在这种情况下,MyDelegateProtocol
有一个可选方法-myThing:argTwo:argThree:
(返回 Bool)。
这个片段似乎得到了正确的语义,但它使用respondsToSelector
并且非常健谈。它可以以更惯用的方式改进吗?
if let delegate = self.delegate {
if delegate.respondsToSelector(#selector(MyDelegateProtocol.myThing(_:argTwo:argThree:))) {
if delegate.myThing!(self, argTwo: foo, argThree: bar) {
// do something
}
}
}