我正在尝试在Swift 2中构建一个Objective-C块,以便将其添加到NSArray
中,如下所示:
typealias CompletionBlock = () -> Void
let aBlock:CompletionBlock = {
print("Hello world!")
}
let nsArray = NSMutableArray()
nsArray.addObject(aBlock) // Error
我知道使用Swift数组可以正常工作,但为了与现有的Objective-C代码兼容,我需要一个
NSArray
。如果我使用Swift数组,编译器会拒绝将其转换为NSArray
,因为它不是[AnyObject]
(它是[Any]
)。问题在于Swift闭包不是对象,而Objective-C块是对象(它们是
NSObject
子类NSBlock
的实例)。所以我的问题是:如何在Swift中创建Objective-C块?我已经尝试在类型别名中使用@convention(block)
,但它不起作用。
unsafeBitCast
的第二个答案。对于重复问题感到抱歉... - deadbeef