Réponses:
Vous pouvez utiliser la balise Disponible, par exemple:
@available(*, deprecated)
func myFunc() {
// ...
}
Où * est la plate-forme (iOS, iOSApplicationExtension, macOS, watchOS, tvOS, * pour tous, etc.).
Vous pouvez également spécifier la version de la plate - forme à partir de laquelle il était introduced
, deprecated
, obsoleted
, renamed
, et 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 votre projet cible plusieurs plates-formes, vous pouvez utiliser plusieurs balises comme ceci:
@available(tvOS, deprecated:9.0.1)
@available(iOS, deprecated:9.1)
@available(macOS, unavailable, message: "Unavailable on macOS")
func myFunc() {
// ...
}
Plus de détails dans la documentation Swift .
*, deprecated: 10.0
va le déprécier pour iOS 10
, tvOS 10
etc., je suppose que nous ne devrions pas combiner *
avec un numéro de version? Des idées pour mieux faire?
@available(*, deprecated: 10.0)
donc une très mauvaise idée si le code ne fonctionnait pas seulement sur iOS
À partir de Swift 3 et Swift 4 , le numéro de version est facultatif. Vous pouvez maintenant simplement taper:
@available(*, deprecated)
func foo() {
// ...
}
Ou si vous voulez qu'un message l'accompagne:
@available(*, deprecated, message: "no longer available ...")
func foo() {
// ...
}
@available(*, deprecated, message = "no longer available ...")
inclusion d'un message.
Vous pouvez l'utiliser pour corriger automatiquement vos entrées avec votre nouvelle fonction
@available(*, deprecated, renamed: "myNewFunc")
func myOldFunc() {
// ...
}
func myNewFunc() {
// ...
}
Au lieu de *, vous pouvez utiliser swift, pour le numéro de version swift.
Les fonctions obsolètes génèrent des avertissements mais peuvent toujours être appelées. (Avertissement)
Les fonctions obsolètes l'empêchent d'être entièrement appelée. (Erreur)
@available(swift, deprecated: 4.0, obsoleted: 4.2, message: "This will be removed in v4.2, please migrate to ...")
ou utilisez d'autres options comme iOS, macOS, watchOS, tvOS ...
@available(iOS, deprecated:7.0, obsoleted: <ObsoletedVersion>, renamed: "myFuncNew", message: "Please use new method - myFuncNew()")
func myFuncOld() {
//
}
Si deployment target
est 9.0
et
1. <ObsoletedVersion>
== 10.0
-warning
2. <ObsoletedVersion>
== 8.0
-compile error
=
s sont remplacés par:
s.