我尝试声明一个与以下 Objective-C block 匹配的闭包:
typedef void(^TyphoonDefinitionBlock)(TyphoonDefinition *definition);
像这样:
var config: TyphoonDefinitionBlock = { (definition: TyphoonDefinition) in
definition.injectProperty("quest", with: nil)
}
. . .并得到以下错误。 (见图)。
正确的做法是什么?
最佳答案
您需要将 definition
声明为 ImplicitlyUnwrappedOptional (TyphoonDefinition!
) 因为在 Objective-C 中它是一个可以为 nil 的指针。
swift 中的普通变量(和常量)不能为 nil。它们必须包含一个值。
关于objective-c - swift : Define a closure compatible with Objective-C block,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24093361/