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

标签 ios objective-c xcode swift swift2

我正在编写一些我想在 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/

相关文章:

ios - 升级到最新的 XCode beta 3 后 Swift 应用程序崩溃

ios - iOS7 上的 UITextView contentOffset 未使用 CGPointZero 初始化

ios - 以编程方式从 iMessage 扩展程序中删除消息

ios - 在iOS上链接libiconv

iOS:如何在 UIScrollView 中显示长文本?

ios - 解析 ANSI 颜色代码并为 NSAttributedString 设置相应的颜色属性

ios - CloudKit : CKQuery showing error: error: The operation couldn’t be completed.(CKErrorDomain 错误 1。)

ios - 将简单变量转换为数组(Swift)

ios - 1 等舱的值(value),而非 2 等舱的值(value)

iphone - 应用程序与 iphone 5 屏幕尺寸的兼容性