我用谷歌搜索但无法找出 swift 等价物respondsToSelector:是什么。
respondsToSelector:
如前所述,在 Swift 中,大多数时候你可以使用 可选的 unwrapper operator 来实现你所需要的?。当且仅当对象存在(不是nil)并且方法已实现时,这允许您调用对象上的方法。
?
nil
在您仍然需要的情况下respondsToSelector:,它仍然作为NSObject协议的一部分存在。
NSObject
如果您respondsToSelector:在 Swift 中调用 Obj-C 类型,那么它的工作方式与您预期的相同。如果您在自己的 Swift 类上使用它,则需要确保您的类派生自NSObject.
这是一个 Swift 类的示例,您可以检查它是否响应选择器:
class Worker : NSObject { func work() { } func eat(food: AnyObject) { } func sleep(hours: Int, minutes: Int) { } } let worker = Worker() let canWork = worker.respondsToSelector(Selector("work")) // true let canEat = worker.respondsToSelector(Selector("eat:")) // true let canSleep = worker.respondsToSelector(Selector("sleep:minutes:")) // true let canQuit = worker.respondsToSelector(Selector("quit")) // false
不要遗漏参数名称,这一点很重要。在此示例中,Selector("sleep::")与 不同Selector("sleep:minutes:")。
Selector("sleep::")
Selector("sleep:minutes:")