Respostas:
Você pode usar a tag Disponível, por exemplo:
@available(*, deprecated)
func myFunc() {
// ...
}
Onde * é a plataforma (iOS, iOSApplicationExtension, macOS, watchOS, tvOS, * para todos, etc.).
Você também pode especificar a versão da plataforma a partir da qual 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 o seu projeto atingir várias plataformas, você poderá usar várias tags, como:
@available(tvOS, deprecated:9.0.1)
@available(iOS, deprecated:9.1)
@available(macOS, unavailable, message: "Unavailable on macOS")
func myFunc() {
// ...
}
Mais detalhes na documentação do Swift .
*, deprecated: 10.0
vai preteri-lo por iOS 10
, tvOS 10
etc, acho que não devemos combinar *
com um número de versão? Alguma idéia de como fazê-lo melhor?
@available(*, deprecated: 10.0)
portanto, é uma idéia muito ruim, se o código não só rodar em iOS
Iniciando o Swift 3 e o Swift 4 , o número da versão é opcional. Agora você pode simplesmente digitar:
@available(*, deprecated)
func foo() {
// ...
}
Ou, se você quiser uma mensagem, acompanhe-a:
@available(*, deprecated, message: "no longer available ...")
func foo() {
// ...
}
@available(*, deprecated, message = "no longer available ...")
ao incluir uma mensagem.
Você pode usar isso para corrigir automaticamente suas entradas com sua nova função
@available(*, deprecated, renamed: "myNewFunc")
func myOldFunc() {
// ...
}
func myNewFunc() {
// ...
}
Em vez de *, você pode usar swift, para o número da versão rápida.
Funções descontinuadas geram avisos, mas ainda podem ser chamadas. (Aviso)
Funções obsoletas impedem que ele seja chamado inteiramente. (Erro)
@available(swift, deprecated: 4.0, obsoleted: 4.2, message: "This will be removed in v4.2, please migrate to ...")
ou use outras opções como 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 são substituídos por:
s.