swift2 指定Swift中的Objective-C闭包变量名

06odsfpq  于 2022-11-06  发布在  Swift
关注(0)|答案(1)|浏览(204)

我正在写一些Swift代码,我想在Objective-C中使用。标头都是自动生成的,但是当使用闭包(在Objective-C中变成块)时,变量名丢失了。
例如:

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

变成了

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

在我所期望的地方

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

这是Xcode错误还是有办法指定变量的名称?

t1qtbnec

t1qtbnec1#

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

* /

相关问题