gpt4 book ai didi

swift - 我们如何在 swift 中使用 NSSelectorFromString?

转载 作者:行者123 更新时间:2023-11-28 10:07:09 26 4
gpt4 key购买 nike

我不明白为什么这总是失败。有什么帮助吗?显然,我不明白 NSStringFromSelector 是如何工作的?下面是我的代码:

class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()

let selector = NSSelectorFromString("test(value:value2:)")
if self.responds(to: selector) {
print("it works")
} else {
print("it failed")
}
}

func test(value: Int, value2: Int) {
}
}

最佳答案

您的选择器字符串格式错误。 NSSelectorFromString 的选择器字符串必须看起来像 Objective-C 签名。

尝试:

let selector = NSSelectorFromString("testWithValue:value2:")

和你的func必须标有@objc 您的class必须标有@objcMembers .


如何获取选择器字符串:

注意:在 Swift 中创建选择器的首选方法是使用 #selector如@DavidBerry 在 his answer 中所述因为它可以让您在编译时检查选择器。

如果你还需要NSSelectorFromString那么这是找出字符串的方法:

添加后@objc到您的函数并编译项目,单击 ViewController.swift 左上角 Xcode 中的 Related Items 图标窗口并选择 Generated Interface -> <ProjectName>-Swift.h 。在那里你会找到你的 func的 Objective-C 接口(interface):

- (void)testWithValue:(NSInteger)value value2:(NSInteger)value2;

然后连接以冒号结尾的部分以创建选择器字符串:"testWithValue:value2:"

关于swift - 我们如何在 swift 中使用 NSSelectorFromString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52012799/

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