由于Swift 5中特定版本的iOS,声明方法不可用

问题描述 投票:0回答:2

我希望实现这样的目标:

@unavailable(iOS 11.0, *)
func oldWay() { 
    ...
}

@available(iOS 11.0, *)
func newWay() { 
    ...
}

我已经尝试过类似@available(iOS 11.0, unavailable, *)之类的东西,但无法编译。

我的问题是我正在使用一种可选方法来遵守Objective-C协议。其中一些仅自iOS 11起可用,我的应用程序自iOS 10起可用,我不想为给定平台实现这两种方法。

例如,如果我这样做:

func oldWay() { 
    ...
}

@available(iOS 11.0, *)
func newWay() { 
    ...
}

这两种方法都在iOS 11以后的所有平台上实现。这不是我想要的。

所以,如果有人有主意...

ios swift swift5 availability
2个回答
0
投票

我认为这可能会满足您的要求。另外,指定rename:将使您更正所生成的编译器错误。

@available(iOS 11.0, unavailable, renamed: "newWay")
func oldWay() {}

0
投票

您可以使用deprecated:自变量(也可以使用message:自变量,因为这似乎是这里发生的事情:

@available(iOS, deprecated: 11.0, message: "Please use 'newWay'")
func oldWay() {

}

@available(iOS 11.0, *)
func newWay() {

}

如果您尝试使用旧方法,则会产生警告。如果您想出错,则将deprecated替换为obsoleted

© www.soinside.com 2019 - 2024. All rights reserved.