如何手动废弃成员

与 Objective-C 不同,Swift 没有预处理器,所以是否还有一种方法可以手动废弃类的成员?

我正在寻找类似的东西:

-(id)method __deprecated;
44352 次浏览

你可以使用“可用”标签,例如:

@available(*, deprecated)
func myFunc() {
// ...
}

平台在哪里 * (iOS、 iOSApplicationExtension、 macOS、 watch OS、 tvOS、 * for all 等)。

您还可以指定平台的版本,从中它是 introduceddeprecatedobsoletedrenamed,和一个 message:

@available(iOS, deprecated:6.0)
func myFunc() {
// calling this function is deprecated on iOS6+
}


Or


@available(iOS, deprecated: 6.0, obsoleted: 7.0, message: "Because !")
func myFunc() {
// deprecated from iOS6, and obsoleted after iOS7, the message "Because !" is displayed in XCode warnings
}

如果您的项目针对多个平台,您可以使用如下几个标记:

@available(tvOS, deprecated:9.0.1)
@available(iOS, deprecated:9.1)
@available(macOS, unavailable, message: "Unavailable on macOS")
func myFunc() {
// ...
}

详情请参阅 快速文档

Swift 3Swift 4开始,版本号是可选的。您现在可以简单地输入:

@available(*, deprecated)
func foo() {
// ...
}

或者,如果你想要一个信息,那就顺其自然吧:

@available(*, deprecated, message: "no longer available ...")
func foo() {
// ...
}

您可以使用它来自动修复您的条目与您的新函数

@available(*, deprecated, renamed: "myNewFunc")
func myOldFunc() {
// ...
}


func myNewFunc() {
// ...
}

您可以使用 Swift 代替 * ,用于快速版本号。

弃用的函数会生成警告,但仍然可以调用。(警告)

过时的函数阻止它被完全调用。(错误)

@available(swift, deprecated: 4.0, obsoleted: 4.2, message: "This will be removed in v4.2, please migrate to ...")

或使用其他选项,如 iOS,macOS,watch OS,tvOS..。

IOS 弃用

@available(iOS, deprecated:7.0, obsoleted: <ObsoletedVersion>, renamed: "myFuncNew", message: "Please use new method - myFuncNew()")
func myFuncOld() {
//logic
}

如果 deployment target< sup > [ About ] = = 9.0

  • <ObsoletedVersion> = = 10.0-warning

    enter image description here

  • <ObsoletedVersion> = = 8.0-compile error

    enter image description here

Swift 5.0

使用 @available弃用任何方法/类/结构体/协议

@available(*, deprecated, message: "Parse your data by hand instead")
func parseData() { }


@available(*, deprecated, renamed: "loadData")
func fetchData() { }


@available(swift, obsoleted: 4.1, renamed: "attemptConnection")
func testConnection() { }


@available(swift, deprecated: 4.0, obsoleted: 5.0, message: "This will be removed in v5.0; please migrate to a different API.")

可能的参数:

  • 介绍
  • 不赞成
  • 过时了
  • 信息
  • 重新命名

更多信息见苹果文档: 属性

原答案: https://stackoverflow.com/a/56379453/4061501