Ios 如何手动弃用成员
与Objective-C不同,Swift没有预处理器,所以仍然有方法手动弃用类的成员吗 我正在寻找类似的东西: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、*适用于所有人等) 您还可以指定从中引入它的平台版本、弃用的平台版本、废弃的平台版本
-(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 3和Swift 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() {
//
}