将 swift 闭包作为 属性 存储在 objective-c class 上,其中块是使用 typedef 声明的

Store a swift closure as a property on an objective-c class where the block is declared using a typedef

天哪,我这辈子都做不到。

typedef void (^StringBlock)(NSString * string);
@property (nonatomic, copy) StringBlock onTextSubmitBlock;
input.onTextSubmitBlock = ^(NSString * text) {

};
input!.onTextSubmitBlock = {(StringBlock) in

}

可以编译,但我无法访问我需要的参数((NSString * text) in objective-c...)

我相信一旦我习惯了 Swift 这将是显而易见的,但我错过了什么?

你很接近。您应该可以像这样使用它:

input!.onTextSubmitBlock = { text in
    println(text)
}

Swift 将从声明中推断出 text 是一个 NSString。 Thera 是您也可以声明的几种替代方法。像这样:

input!.onTextSubmitBlock = {
    println([=11=]) // [=11=] is text
}

还有这个:

input!.onTextSubmitBlock = { (text: NSString) -> () in
    println(text)
}