gpt4 book ai didi

objective-c - Swift 中的 respondsToSelector 等价物是什么?

转载 作者:行者123 更新时间:2023-11-30 13:51:00 30 4
gpt4 key购买 nike

我用谷歌搜索过,但无法找到与 respondsToSelector: 等效的 swift 是什么。

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

最佳答案

如前所述,在 Swift 中大多数时候你可以使用 ? 来实现你所需要的。可选的解包运算符。当且仅当该对象存在(不是 nil )并且该方法已实现时,这才允许您调用该对象的方法。

如果您还需要respondsToSelector: ,它仍然作为 NSObject 的一部分存在。协议(protocol)。

如果您调用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:")相同.

关于objective-c - Swift 中的 respondsToSelector 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34262071/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com