Odpowiedzi:
Możesz użyć tagu Dostępne, na przykład:
@available(*, deprecated)
func myFunc() {
// ...
}
Gdzie * to platforma (iOS, iOSApplicationExtension, macOS, watchOS, tvOS, * dla wszystkich itd.).
Można również określić wersję platformy, z której było introduced
, deprecated
, obsoleted
, renamed
oraz 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
}
Jeśli Twój projekt jest przeznaczony dla wielu platform, możesz użyć kilku tagów, takich jak:
@available(tvOS, deprecated:9.0.1)
@available(iOS, deprecated:9.1)
@available(macOS, unavailable, message: "Unavailable on macOS")
func myFunc() {
// ...
}
Więcej szczegółów w dokumentacji Swift .
*, deprecated: 10.0
zastąpi go iOS 10
, tvOS 10
itp., myślę, że nie powinniśmy łączyć go *
z numerem wersji? Jakieś pomysły, jak to zrobić lepiej?
@available(*, deprecated: 10.0)
dlatego jest to bardzo zły pomysł, gdyby kod działał nie tylko na iOS
Począwszy od Swift 3 i Swift 4 , numer wersji jest opcjonalny. Możesz teraz po prostu wpisać:
@available(*, deprecated)
func foo() {
// ...
}
Lub jeśli chcesz, aby wiadomość była zgodna z tym:
@available(*, deprecated, message: "no longer available ...")
func foo() {
// ...
}
@available(*, deprecated, message = "no longer available ...")
przy dołączaniu wiadomości.
Możesz użyć tego, aby automatycznie naprawić swoje wpisy za pomocą nowej funkcji
@available(*, deprecated, renamed: "myNewFunc")
func myOldFunc() {
// ...
}
func myNewFunc() {
// ...
}
Zamiast * możesz użyć swift, aby uzyskać szybki numer wersji.
Przestarzałe funkcje generują ostrzeżenia, ale nadal można je wywołać. (Ostrzeżenie)
Przestarzałe funkcje uniemożliwiają jej całkowite wywołanie. (Błąd)
@available(swift, deprecated: 4.0, obsoleted: 4.2, message: "This will be removed in v4.2, please migrate to ...")
lub użyj innych opcji, takich jak iOS, macOS, watchOS, tvOS ...
@available(iOS, deprecated:7.0, obsoleted: <ObsoletedVersion>, renamed: "myFuncNew", message: "Please use new method - myFuncNew()")
func myFuncOld() {
//
}
Jeśli deployment target
tak9.0
i
1. <ObsoletedVersion>
== 10.0
-warning
2. <ObsoletedVersion>
== 8.0
-compile error
=
s są zastępowane przez:
s.