Respuestas:
Puede usar la etiqueta Disponible, por ejemplo:
@available(*, deprecated)
func myFunc() {
// ...
}
Donde * es la plataforma (iOS, iOSApplicationExtension, macOS, watchOS, tvOS, * para todos, etc.).
También puede especificar la versión de la plataforma de la que era introduced
, deprecated
, obsoleted
, renamed
, y 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
}
Si su proyecto apunta a múltiples plataformas, puede usar varias etiquetas de esta manera:
@available(tvOS, deprecated:9.0.1)
@available(iOS, deprecated:9.1)
@available(macOS, unavailable, message: "Unavailable on macOS")
func myFunc() {
// ...
}
Más detalles en la documentación de Swift .
*, deprecated: 10.0
lo desaprobará iOS 10
, tvOS 10
etc., supongo que no deberíamos combinarlo *
con un número de versión. ¿Alguna idea sobre cómo hacerlo mejor?
@available(*, deprecated: 10.0)
por lo tanto, es una muy mala idea si el código no solo se ejecuta en iOS
A partir de Swift 3 y Swift 4 , el número de versión es opcional. Ahora puede simplemente escribir:
@available(*, deprecated)
func foo() {
// ...
}
O si desea un mensaje, hágalo:
@available(*, deprecated, message: "no longer available ...")
func foo() {
// ...
}
@available(*, deprecated, message = "no longer available ...")
cuando se incluye un mensaje.
Puede usar esto para corregir automáticamente las entradas con su nueva función
@available(*, deprecated, renamed: "myNewFunc")
func myOldFunc() {
// ...
}
func myNewFunc() {
// ...
}
En lugar de * puede usar swift, para el número de Versión de swift.
Las funciones en desuso generan advertencias pero aún se pueden llamar. (Advertencia)
Las funciones obsoletas impiden que se llame por completo. (Error)
@available(swift, deprecated: 4.0, obsoleted: 4.2, message: "This will be removed in v4.2, please migrate to ...")
o use otras opciones como iOS, macOS, watchOS, tvOS ...
@available(iOS, deprecated:7.0, obsoleted: <ObsoletedVersion>, renamed: "myFuncNew", message: "Please use new method - myFuncNew()")
func myFuncOld() {
//
}
Si deployment target
es 9.0
y
1. <ObsoletedVersion>
== 10.0
-warning
2. <ObsoletedVersion>
== 8.0
-compile error
=
s se reemplazan por:
s.