gpt4 book ai didi

ios - 将 swift 闭包存储为 objective-c 类的属性,其中使用 typedef 声明 block

转载 作者:可可西里 更新时间:2023-11-01 01:41:44 27 4
gpt4 key购买 nike

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

  • 我在 objective-c 中有一个 typdef,如下所示:
typedef void (^StringBlock)(NSString * string);
  • 我有一个 objective-c 类,它有一个允许您存储自己的 StringBlock 类型 block 的属性。该属性在 objective-c 中声明如下:
@property (nonatomic, copy) StringBlock onTextSubmitBlock;
  • 在 objective-c 中为其分配 block 如下所示:
input.onTextSubmitBlock = ^(NSString * text) {

};
  • 我想在 Swift 类中做同样的事情!我最接近有效的方法是:
input!.onTextSubmitBlock = {(StringBlock) in

}

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

我敢肯定,一旦我习惯了 Swift,这就会很明显,但我错过了什么?

最佳答案

你很接近。您应该能够像这样使用它:

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

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

input!.onTextSubmitBlock = {
println($0) // $0 is text
}

还有这个:

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

关于ios - 将 swift 闭包存储为 objective-c 类的属性,其中使用 typedef 声明 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29151612/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com