Contrairement à Objective-C, Swift n'a pas de préprocesseur, alors existe-t-il toujours un moyen de déprécier manuellement les membres d'une classe?
Je recherche quelque chose de similaire à ceci:
-(id)method __deprecated;
Contrairement à Objective-C, Swift n'a pas de préprocesseur, alors existe-t-il toujours un moyen de déprécier manuellement les membres d'une classe?
Je recherche quelque chose de similaire à ceci:
-(id)method __deprecated;
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 .
=
s sont remplacés par:
s.*, deprecated: 10.0
va le déprécier pouriOS 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:
Ou si vous voulez qu'un message l'accompagne:
la source
@available(*, deprecated, message = "no longer available ...")
inclusion d'un message.Vous pouvez l'utiliser pour corriger automatiquement vos entrées avec votre nouvelle fonction
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)
ou utilisez d'autres options comme iOS, macOS, watchOS, tvOS ...
la source
Si
deployment target
est9.0
et1.
<ObsoletedVersion>
==10.0
-warning
2.
<ObsoletedVersion>
==8.0
-compile error
la source