W przeciwieństwie do Objective-C, Swift nie ma preprocesora, więc czy nadal istnieje sposób na ręczne wycofanie członków klasy?
Szukam czegoś podobnego do tego:
-(id)method __deprecated;
W przeciwieństwie do Objective-C, Swift nie ma preprocesora, więc czy nadal istnieje sposób na ręczne wycofanie członków klasy?
Szukam czegoś podobnego do tego:
-(id)method __deprecated;
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 .
=
s są zastępowane przez:
s.*, deprecated: 10.0
zastąpi goiOS 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 iOSPocząwszy od Swift 3 i Swift 4 , numer wersji jest opcjonalny. Możesz teraz po prostu wpisać:
Lub jeśli chcesz, aby wiadomość była zgodna z tym:
źródło
@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
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)
lub użyj innych opcji, takich jak iOS, macOS, watchOS, tvOS ...
źródło
Jeśli
deployment target
tak9.0
i1.
<ObsoletedVersion>
==10.0
-warning
2.
<ObsoletedVersion>
==8.0
-compile error
źródło