Ответы:
Вы можете использовать тег Available, например:
@available(*, deprecated)
func myFunc() {
// ...
}
Где * - платформа (iOS, iOSApplicationExtension, macOS, watchOS, tvOS, * для всех и т. Д.).
Вы можете также указать версию платформы , с которой он был introduced
, deprecated
, obsoleted
, renamed
, а также 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
}
Если ваш проект ориентирован на несколько платформ, вы можете использовать несколько тегов, например:
@available(tvOS, deprecated:9.0.1)
@available(iOS, deprecated:9.1)
@available(macOS, unavailable, message: "Unavailable on macOS")
func myFunc() {
// ...
}
Более подробная информация в документации Swift .
*, deprecated: 10.0
не рекомендуется использовать его iOS 10
и tvOS 10
т. д., я полагаю, мы не должны объединяться *
с номером версии? Есть идеи, как это сделать лучше?
@available(*, deprecated: 10.0)
поэтому это очень плохая идея, если код работает не только на iOS
Начиная с Swift 3 и Swift 4 , номер версии не обязателен. Теперь вы можете просто набрать:
@available(*, deprecated)
func foo() {
// ...
}
Или, если вы хотите сообщение, согласитесь с ним:
@available(*, deprecated, message: "no longer available ...")
func foo() {
// ...
}
@available(*, deprecated, message = "no longer available ...")
при включении сообщения.
Вы можете использовать это, чтобы автоматически исправить ваши записи с вашей новой функцией
@available(*, deprecated, renamed: "myNewFunc")
func myOldFunc() {
// ...
}
func myNewFunc() {
// ...
}
Вместо * вы можете использовать swift для номера версии swift.
Устаревшие функции генерируют предупреждения, но все еще могут быть вызваны. (Предупреждение)
Устаревшие функции не дают ему быть вызванным полностью. (Ошибка)
@available(swift, deprecated: 4.0, obsoleted: 4.2, message: "This will be removed in v4.2, please migrate to ...")
или используйте другие опции, такие как iOS, macOS, watchOS, tvOS ...
@available(iOS, deprecated:7.0, obsoleted: <ObsoletedVersion>, renamed: "myFuncNew", message: "Please use new method - myFuncNew()")
func myFuncOld() {
//
}
Если deployment target
есть 9.0
и
1. <ObsoletedVersion>
== 10.0
-warning
2. <ObsoletedVersion>
== 8.0
-compile error
=
s заменяются на:
s.