什么是swift等效的responsesToSelector?

我已经google了,但是没能找到什么swift等效于响应ToSelector:is。

这是我能找到的唯一的东西(Swift alternative to respondsToSelector:),但在我的情况下不太相关,因为它检查委托的存在,我没有委托我只是想检查一个新的API是否存在运行在设备上,如果不回退到api的先前版本。

如前所述,在Swift的大部分时间你可以实现你所需要的?可选的解包器操作符。当且仅当对象存在(不是nil)并且该方法被实现时,这允许您调用对象上的方法

在你仍然需要responsesToSelector:的情况下,它仍然作为NSObject协议的一部分。

如果你在Swift中的Obj-C类型上调用responsesToSelector:,那么它的工作方式与你所期望的相同。如果你使用它自己的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:”)不同。

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...