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

Swift 4 get Bool result from "perform" function call

我在 Swift:

中有这样的函数
@objc func doSomeStuff(_ args: [String]) -> Bool {
    return true
}

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

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

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

let returnedValue = perform(sel, with: args)

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

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

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

在 Swift 中你必须 return 引用类型 NSNumber 实例而不是值类型 Bool

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

并且您必须取消引用指针

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