Swift:定义一个与Objective-C块兼容的闭包

Jas*_*ues 7 objective-c swift

我试图声明一个与以下Objective-C块匹配的闭包:

typedef void(^TyphoonDefinitionBlock)(TyphoonDefinition *definition);
Run Code Online (Sandbox Code Playgroud)

像这样:

var config: TyphoonDefinitionBlock = { (definition: TyphoonDefinition) in
    definition.injectProperty("quest", with: nil)
}
Run Code Online (Sandbox Code Playgroud)

...并得到以下错误.(见图).

在此输入图像描述

这样做的正确方法是什么?

dre*_*wag 5

您需要声明definitionImplicitlyUnwrappedOptional(TyphoonDefinition!),因为在objective-C中它是一个可以为nil的指针.

swift中的正常变量(和常量)不能为零.它们必须包含值.