与Objective-C不同,Swift没有预处理器,那么还有办法手动弃用类的成员吗?
我正在寻找类似的东西:
-(id)method __deprecated;
答案 0 :(得分:231)
您可以使用可用标记,例如:
@available(*, deprecated)
func myFunc() {
// ...
}
其中*是平台(iOS,iOSApplicationExtension,macOS,watchOS,tvOS,*等等)。
您还可以指定平台的版本introduced
,deprecated
,obsoleted
,renamed
和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() {
// ...
}
中的更多详细信息
答案 1 :(得分:63)
启动 Swift 3 和 Swift 4 ,版本号是可选的。您现在只需输入:
@available(*, deprecated)
func foo() {
// ...
}
或者如果你想要一条消息:
@available(*, deprecated, message: "no longer available ...")
func foo() {
// ...
}
答案 2 :(得分:2)
您可以使用此功能通过新功能自动修复您的条目
@available(*, deprecated, renamed: "myNewFunc")
func myOldFunc() {
// ...
}
func myNewFunc() {
// ...
}
您可以使用swift代替*作为swift版本号。
不推荐使用的函数会生成警告,但仍可以调用。 (警告)
过时的函数阻止它被完全调用。 (错误)
@available(swift, deprecated: 4.0, obsoleted: 4.2, message: "This will be removed in v4.2, please migrate to ...")
或使用其他选项,例如iOS,macOS,watchOS,tvOS ...
答案 3 :(得分:0)