Risposte:
Puoi utilizzare il tag Disponibile, ad esempio:
@available(*, deprecated)
func myFunc() {
// ...
}
Dove * è la piattaforma (iOS, iOSApplicationExtension, macOS, watchOS, tvOS, * per tutti, ecc.).
È inoltre possibile specificare la versione della piattaforma da cui era introduced
, deprecated
, obsoleted
, renamed
, e 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
}
Se il tuo progetto ha come target più piattaforme, puoi utilizzare diversi tag in questo modo:
@available(tvOS, deprecated:9.0.1)
@available(iOS, deprecated:9.1)
@available(macOS, unavailable, message: "Unavailable on macOS")
func myFunc() {
// ...
}
Maggiori dettagli nella documentazione di Swift .
*, deprecated: 10.0
lo deprecherò per iOS 10
, tvOS 10
ecc., suppongo che non dovremmo combinare *
con un numero di versione? Qualche idea su come farlo meglio?
@available(*, deprecated: 10.0)
quindi è una pessima idea se il codice non dovesse funzionare solo su iOS
A partire da Swift 3 e Swift 4 , il numero di versione è facoltativo. Ora puoi semplicemente digitare:
@available(*, deprecated)
func foo() {
// ...
}
O se vuoi un messaggio, seguilo:
@available(*, deprecated, message: "no longer available ...")
func foo() {
// ...
}
@available(*, deprecated, message = "no longer available ...")
quando si include un messaggio.
Puoi usarlo per riparare automaticamente i tuoi accessi con la tua nuova funzione
@available(*, deprecated, renamed: "myNewFunc")
func myOldFunc() {
// ...
}
func myNewFunc() {
// ...
}
Invece di * puoi usare swift, per il numero di versione rapido.
Le funzioni obsolete generano avvisi ma possono comunque essere chiamate. (Avvertimento)
Le funzioni obsolete impediscono che venga chiamato interamente. (Errore)
@available(swift, deprecated: 4.0, obsoleted: 4.2, message: "This will be removed in v4.2, please migrate to ...")
o usa altre opzioni come iOS, macOS, watchOS, tvOS ...
@available(iOS, deprecated:7.0, obsoleted: <ObsoletedVersion>, renamed: "myFuncNew", message: "Please use new method - myFuncNew()")
func myFuncOld() {
//
}
Se deployment target
è 9.0
e
1. <ObsoletedVersion>
== 10.0
-warning
2. <ObsoletedVersion>
== 8.0
-compile error
=
s vengono sostituite con:
s.