Bool { return true } 我在要执行的字符串变量中-6ren">
gpt4 book ai didi

Swift 4 从 "perform"函数调用中获取 Bool 结果

转载 作者:行者123 更新时间:2023-11-28 14:20:55 26 4
gpt4 key购买 nike

我在 Swift 中有这样一个函数:

@objc func doSomeStuff(_ args: [String]) -> Bool {
return true
}

我在要执行的字符串变量中有一个选择器名称。这是我的初始值:

let sel = Selector("doSomeStuff:")
let args = ["123123", "qweqweqwe"]

问题是当我试图接收这样的函数计算结果时:

let returnedValue = perform(sel, with: args)

从那个地方开始,我不知道如何从 returnedValue 中获取 bool 值多变的。我已经尝试过的事情:

  • 传递inout Bool在函数内部设置的参数
  • 传递UnsafeMutablePointer<Bool>设置函数
  • 获取returnedValue.takeRetainedValue()

以上都失败了。那么,我应该如何处理这种情况?

最佳答案

当您使用 ObjC 运行时时,请考虑您正在处理对象。 ObjC 签名是performSelector:withObject:

在 Swift 中你必须返回一个引用类型 NSNumber 实例而不是值类型 Bool

@objc func doSomeStuff(_ args: [String]) -> NSNumber  {
return NSNumber(booleanLiteral: true)
}

你必须取消对指针的引用

let result = perform(sel, with: args)
let number = result!.takeUnretainedValue()

关于Swift 4 从 "perform"函数调用中获取 Bool 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51946505/

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