我正在编写一些我想在 Objective-C 中使用的 Swift 代码。 header 都是自动生成的,但是当使用闭包(在 objective-c 中成为 block )时,变量名会丢失。
例如:
@objc public func doSomething(success: (result: String) ->())
成为
-(void)doSomething:(NSString * _Nonnull)success;
我所期望的位置:
-(void)doSomething:(NSString * result)success;
这是 Xcode 错误还是有办法指定变量的名称?
最佳答案
Swift 中的函数和闭包是同一种类型,你可以试试类似的东西
// what you have
func boo(mf: String->Void) { mf("alfa") }
boo { (str) -> Void in
print(str)
} // "alfa"
// try this
func foo(str: String) { print(str + " beta") }
// and see the signature in Objective C
boo(foo)
/*
alfa
alfa beta
*/
关于ios - 从 Swift 指定 Objective-C 闭包变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34234409/