使用多个参数弃用重命名的方法

Luc*_*rah 7 deprecated ios swift swift3

我想更新Swift 3的以下方法的命名:

public func imageWithUrl(url: String, placeholderNamed: String) {
    if let image = UIImage(named: placeholderNamed) {
        imageWithUrl(url: url, placeholder: image)
    } else {
        imageWithUrl(url: url)
    }
}
Run Code Online (Sandbox Code Playgroud)

public func image(url: String, placeholderNamed: String) {
Run Code Online (Sandbox Code Playgroud)

所以我用这个方法弃用旧方法:

@available(*, deprecated: 1.8, renamed: "image(url:, placeholder:")
Run Code Online (Sandbox Code Playgroud)

问题是我收到以下错误:

'available'属性的'renamed'参数必须是运算符,标识符或完整函数名称,可选地由类型名称预设

Luc*_*rah 9

我的renamed:部件有问题.为了解决这个问题,只需将其更改为

@available(*, deprecated: 1.8, renamed: "image(url:placeholder:)")
Run Code Online (Sandbox Code Playgroud)

  • 这在文档中并不完全清楚(或者至少不明显),但是为“renamed”给出的字符串文字参数的构造遵循非常严格的规则;在上面的情况下,使用_“完整函数名称”_(在我看来,_可以_在文档中更清楚地指定)。您在这里的答案修正了这个论点,所以它现在确实遵循了_“完整函数名称”_的规则(没有用逗号分隔)。 (2认同)