objective-c - swift : Define a closure compatible with Objective-C block

标签 objective-c swift

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

typedef void(^TyphoonDefinitionBlock)(TyphoonDefinition *definition);

像这样:

var config: TyphoonDefinitionBlock = { (definition: TyphoonDefinition) in
    definition.injectProperty("quest", with: nil)
}

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

enter image description here

正确的做法是什么?

最佳答案

您需要将 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/

相关文章:

iphone - 如何将 NSString 转换为数组?

objective-c - 从弧度转换为错误的度数

ios - 我可以删除一个 Realm 而不是进行迁移吗?

ios - 如何选择和突出显示像 UITableViewCell 这样的 UICollectionView?

ios - 是否可以在两个场景上有一个固定的 SKSpriteNode?

Iphone/ipad 通过触摸事件自定义控制

ios - 通过在 iOS swift 中排序两个值来查询 firebase 数据库

ios - 设计导航项右栏按钮,在传递数据时使用 segue 到另一个 VC

ios - SCNNode 上的 CIFilter 仅适用于模拟器

ios - swift 崩溃报告 `function signature specialization`