gpt4 book ai didi

ios - 作为 AnyObject 的 Swift 闭包

转载 作者:IT王子 更新时间:2023-10-29 05:33:13 25 4
gpt4 key购买 nike

我正在尝试使用此方法:class_addMethod() 在 Obj-c 中的用法如下:

class_addMethod([self class], @selector(eventHandler), imp_implementationWithBlock(handler), "v@:");

我在 Swift 中这样使用它:

class_addMethod(NSClassFromString("UIBarButtonItem"), "handler", imp_implementationWithBlock(handler), "v@:")

正如您可能已经想到的那样,它是 UIBarButtonItem 的扩展。

imp_implementationWithBlock 采用 AnyObject! 类型的参数

如何将 ()->() 转换为 AnyObject

我试过这样转换它:handler as AnyObject 但它给我一个错误提示:()->() does not conform to protocol 'AnyObject'

最佳答案

How can I cast ()->() into AnyObject ?

警告:此答案包括 Swift 中未记录和不安全的功能。我怀疑这能否通过 AppStore 审查。

let f: ()->() = {
println("test")
}

let imp = imp_implementationWithBlock(
unsafeBitCast(
f as @objc_block ()->(),
AnyObject.self
)
)

关于ios - 作为 AnyObject 的 Swift 闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28211973/

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