Ios 如何手动弃用成员

Ios 如何手动弃用成员,ios,objective-c,swift,c-preprocessor,deprecated,Ios,Objective C,Swift,C Preprocessor,Deprecated,与Objective-C不同,Swift没有预处理器,所以仍然有方法手动弃用类的成员吗 我正在寻找类似的东西: -(id)method __deprecated; 您可以使用可用标记,例如: @available(*, deprecated) func myFunc() { // ... } 其中*是平台(iOS、iOSApplicationExtension、macOS、watchOS、tvOS、*适用于所有人等) 您还可以指定从中引入它的平台版本、弃用的平台版本、废弃的平台版本

与Objective-C不同,Swift没有预处理器,所以仍然有方法手动弃用类的成员吗

我正在寻找类似的东西:

-(id)method __deprecated;

您可以使用可用标记,例如:

@available(*, deprecated)
func myFunc() { 
    // ...
}
其中*是平台(iOS、iOSApplicationExtension、macOS、watchOS、tvOS、*适用于所有人等)

您还可以指定从中引入它的平台版本、弃用的平台版本、废弃的平台版本、重命名的平台版本以及消息:

@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代替*作为swift版本号

不推荐使用的函数会生成警告,但仍可调用。(警告)

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

或者使用其他选项,如iOS、macOS、watchOS、tvOS…

@可用(iOS,已弃用:7.0,已淘汰:,重命名为:“myFuncNew”,消息:“请使用新方法-myFuncNew()”)
@available(iOS, deprecated:7.0, obsoleted: <ObsoletedVersion>, renamed: "myFuncNew", message: "Please use new method - myFuncNew()")
func myFuncOld() {
    //
}
func myFuncOld(){ // }
如果部署目标
9.0

1.
=
10.0
-
警告

2.
==
8.0
-
编译错误


对于Swift 2.3,版本号也是可选的。对于Swift 2.3,当包含一条消息时,语法似乎是
@available(*,弃用,message=“不再可用…”)
。@Daniel,这很奇怪,苹果改变了它的一部分,而不是其余部分,并将其命名为2.3。签名,我会再次更新答案,谢谢留言!在Swift 3中,
=
s被替换为
s.
*,弃用:10.0
将弃用它用于
IOS10
TVOS10
等,我想我们不应该将
*
与版本号结合起来?关于如何做得更好,有什么想法吗?@fabb这是应用程序的版本,不是iosb。这不是真的。从您链接的文档中可以准确地看到:“指定平台的版本”,回到我的原始观点:
@available(*,弃用:10.0)
,因此,如果代码不仅在IOS上运行,而且在“过时”选项的情况下,不能使用它,这是一个非常糟糕的主意。根据这一点,该方案没有实施。
@available(iOS, deprecated:7.0, obsoleted: <ObsoletedVersion>, renamed: "myFuncNew", message: "Please use new method - myFuncNew()")
func myFuncOld() {
    //
}