ios - 为什么 func 闭包有时会在 Swift 中删除它的参数名称?

标签 ios xcode swift

我有两个闭包的函数

testNetworkAvailability(reachableBlock:, unreachableBlock:)

但是当我按下回车键来自动完成闭包占位符时,第二个 unreachableBlock将连同它一起删除变量名称并导致错误。

例如,如果我按回车键打开这个闭包占位符,它将如下所示:

testNetworkAvailability(reachableBlock: { () -> Void in
        <#code#>
    }) { () -> Void in
        <#code#>
    }

事实上,当我将此函数复制到 stackoverflow 时,这些 block 的占位符显示为 <#(() -> Void)?##() -> Void#> .它应该如此奇怪#() -> Void#只是,不应该吗?

这是为什么以及如何解决?

最佳答案

只要最后一个参数是闭包,Swift 就允许您省略参数名称并将其视为内联 block 。

autoreleasepool {
   // ...
}

请参阅 trailing closures 上的文档.

然而,XCode 的自动完成功能是否应该更喜欢尾随闭包是一个有争议的话题。

关于ios - 为什么 func 闭包有时会在 Swift 中删除它的参数名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28653875/

相关文章:

swift - 如何使用其他参数将图像发送到服务器

arrays - swift 3 : Remove specific string from array without knowing the indexPath?

iOS - 当定位服务被接受时叫什么?

ios - Xcode - 自定义 TableViewCell 显示错误数据

swift - 在 UINavigationBar 中看不到 rightBarButtonItem?

iphone - Apple 应用程序加载器控制台

iphone - 通过 AppleScript 构建并运行 xcode 项目

ios - 为什么将 char 数组转换为字符串会创建一个 nil 字符串?

iphone - 如何停止循环动画并用新值再次调用它

ios - 如何在swift中根据标签高度制作可伸缩图像