【发布时间】:2016-02-12 12:11:13
【问题描述】:
我正在尝试在 Swift 2 中构建一个 Objective-C 块,以便像这样将其添加到 NSArray:
typealias CompletionBlock = () -> Void
let aBlock:CompletionBlock = {
print("Hello world!")
}
let nsArray = NSMutableArray()
nsArray.addObject(aBlock) // Error
我知道它适用于 Swift 数组,但我需要一个 NSArray 以与现有的 Objective-C 代码兼容。如果我使用 swift 数组,编译器将拒绝将其转换为 NSArray,因为它不会是 [AnyObject](它将是 [Any])。
这里的问题是 swift 闭包不是一个与 Objective-C 块相反的对象,后者是场景背后的对象(它们是 NSBlock 的实例,它是 NSObject 的子类)
所以我的问题是:如何快速创建一个 Objective-C 块?我尝试在 typealias 中使用 @convention (block),但它不起作用。
【问题讨论】:
-
谢谢!我错过了正确使用
unsafeBitCast的第二个答案。抱歉重复...
标签: objective-c swift2 closures objective-c-blocks