Antworten:
Sie können das Tag Verfügbar beispielsweise verwenden:
@available(*, deprecated)
func myFunc() {
// ...
}
Wobei * die Plattform ist (iOS, iOSApplicationExtension, macOS, watchOS, tvOS, * für alle usw.).
Sie können auch die Version der Plattform angeben , von dem es war introduced
, deprecated
, obsoleted
, renamed
, und 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
}
Wenn Ihr Projekt auf mehrere Plattformen abzielt, können Sie mehrere Tags wie folgt verwenden:
@available(tvOS, deprecated:9.0.1)
@available(iOS, deprecated:9.1)
@available(macOS, unavailable, message: "Unavailable on macOS")
func myFunc() {
// ...
}
Weitere Details in der Swift-Dokumentation .
*, deprecated: 10.0
wird deprecate es iOS 10
, tvOS 10
etc, ich denke , wir nicht kombinieren sollte *
mit einer Versionsnummer? Irgendwelche Ideen, wie man es besser macht?
@available(*, deprecated: 10.0)
Daher ist es eine sehr schlechte Idee, wenn der Code nicht nur unter iOS ausgeführt wird
Ab Swift 3 und Swift 4 ist die Versionsnummer optional. Sie können jetzt einfach Folgendes eingeben:
@available(*, deprecated)
func foo() {
// ...
}
Oder wenn Sie eine Nachricht mitmachen möchten:
@available(*, deprecated, message: "no longer available ...")
func foo() {
// ...
}
@available(*, deprecated, message = "no longer available ...")
beim Einfügen einer Nachricht zu sein.
Sie können dies verwenden, um Ihre Einträge mit Ihrer neuen Funktion automatisch zu korrigieren
@available(*, deprecated, renamed: "myNewFunc")
func myOldFunc() {
// ...
}
func myNewFunc() {
// ...
}
Anstelle von * können Sie für die schnelle Versionsnummer swift verwenden.
Veraltete Funktionen erzeugen Warnungen, können aber trotzdem aufgerufen werden. (Warnung)
Veraltete Funktionen verhindern, dass es vollständig aufgerufen wird. (Error)
@available(swift, deprecated: 4.0, obsoleted: 4.2, message: "This will be removed in v4.2, please migrate to ...")
oder verwenden Sie andere Optionen wie iOS, macOS, watchOS, tvOS ...
@available(iOS, deprecated:7.0, obsoleted: <ObsoletedVersion>, renamed: "myFuncNew", message: "Please use new method - myFuncNew()")
func myFuncOld() {
//
}
Wenn deployment target
ist 9.0
und
1. <ObsoletedVersion>
== 10.0
-warning
2. <ObsoletedVersion>
== 8.0
-compile error
=
s durch:
s ersetzt.