Відповіді:
Ви можете використовувати тег "Доступні", наприклад:
@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.