gpt4 book ai didi

swift - 关于 performSelector 返回值

转载 作者:搜寻专家 更新时间:2023-10-31 22:02:52 25 4
gpt4 key购买 nike

大家都知道ios在swift2.0中支持“performSelector”我想知道如何获取 performSelector 的返回值?

let returnValue:Unmanaged<AnyObject> = (self.dataSource?.performSelector("myselector:", withObject: self))!
let value : Int? = returnValue.takeRetainedValue() as? Int

最后一行崩溃了,如何在swift2.0中获取“performSelector”的值?

最佳答案

我认为目前 Swift 中的 performSelector 只支持符合 AnyObject 的返回值,在你的情况下你有 Int 而不是。在这种情况下,performSelector 将返回 nil,并且您的代码显式地展开 Optional 使程序崩溃。

因此解决此问题的一种方法是制作一个返回 NSNumber 的方法。

您可以在 playground 中尝试此代码:

@objc class B: NSObject {
func myselector(arg: A) -> NSNumber {
return 0
}
}

@objc class A: NSObject {
var dataSource: B? = B()
func a() -> Int {
let returnValue = self.dataSource?.performSelector("myselector:", withObject: self)
let value = returnValue?.takeRetainedValue() as! NSNumber
return value.integerValue
}
}

A().a()

关于swift - 关于 performSelector 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33476214/

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