从Swift指定Objective-C闭包变量名

时间:2015-12-11 23:46:32

标签: ios objective-c xcode swift swift2

我正在编写一些我想在Objective-C中使用的Swift代码。标题都是自动生成的,但是当使用闭包(在objective-c中成为块)时,变量名称将丢失。

例如:

 @objc public func doSomething(success: (result: String) ->());

变为

 -(void)doSomething:(NSString * _Nonnull)success;

我本来期望的那样:

 -(void)doSomething:(NSString * result)success;

这是一个XCode错误还是有办法指定变量应该命名的内容?

1 个答案:

答案 0 :(得分:0)

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
*/