gpt4 book ai didi

快速选择器 : how to construct instance referring to method with parameters?

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

我正在使用 Swift 和 Objective C 的反射来尝试调用一个方法,但该方法接受参数,并且我无法弄清楚如何构造引用方法的 Selector 实例它接受参数。

这里是一些示例代码:

class Thing : NSObject {

func doSomething() {
}

func doSomething(str :String) {
}

}

extension Thing {

func doSomethingElse(str :String) -> String {
}

}

let t = Thing()

var selector = Selector("doSomething")
//selector = Selector("doSomething:")

if t.responds(to: selector) {
t.perform(selector)
}

所以我可以毫无问题地调用 doSomething ,但我似乎无法从引用 doSomething(str :String)< 的字符串创建一个 Selector/。我尝试使用字符串“doSomething:”(注释掉的行)来做到这一点。

为了以防万一,我最终会尝试调​​用扩展方法 doSomethingElse

如何通过反射/选择器调用带参数的 Swift 方法?

附注我知道现在一般来说您应该使用 #selector ,但这在我的情况下不起作用,因为方法 doSomething 可能不存在于编译后的代码中代码。

最佳答案

在 Objective C 中,带有签名“doSomething(str :String)”的 Swift 方法被称为“doSomethingElseWithStr:”。

关于快速选择器 : how to construct instance referring to method with parameters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40633169/

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