Tidak seperti Objective-C, Swift tidak memiliki preprosesor, jadi apakah masih ada cara untuk secara manual mencela anggota kelas?
Saya mencari sesuatu yang mirip dengan ini:
-(id)method __deprecated;
Tidak seperti Objective-C, Swift tidak memiliki preprosesor, jadi apakah masih ada cara untuk secara manual mencela anggota kelas?
Saya mencari sesuatu yang mirip dengan ini:
-(id)method __deprecated;
Anda dapat menggunakan tag yang Tersedia, misalnya:
@available(*, deprecated)
func myFunc() {
// ...
}
Di mana * adalah platform (iOS, iOSApplicationExtension, macOS, watchOS, tvOS, * untuk semua, dll.).
Anda juga dapat menentukan versi dari platform dari mana itu introduced
, deprecated
, obsoleted
, renamed
, dan 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
}
Jika proyek Anda menargetkan beberapa platform, Anda dapat menggunakan beberapa tag seperti:
@available(tvOS, deprecated:9.0.1)
@available(iOS, deprecated:9.1)
@available(macOS, unavailable, message: "Unavailable on macOS")
func myFunc() {
// ...
}
Lebih detail dalam dokumentasi Swift .
=
s diganti dengan:
s.*, deprecated: 10.0
akan mencabutnya untukiOS 10
,tvOS 10
dll, saya kira kita tidak boleh menggabungkan*
dengan nomor versi? Ada ide tentang bagaimana melakukannya dengan lebih baik?@available(*, deprecated: 10.0)
oleh karena itu ide yang sangat buruk jika kode tidak hanya berjalan di iOSMulai Swift 3 dan Swift 4 , nomor versi adalah opsional. Anda sekarang dapat mengetik:
Atau jika Anda ingin sebuah pesan meneruskannya:
sumber
@available(*, deprecated, message = "no longer available ...")
ketika menyertakan pesan.Anda dapat menggunakan ini untuk memperbaiki entri Anda dengan fungsi baru Anda
Alih-alih * Anda dapat menggunakan swift, untuk nomor Versi swift.
Fungsi yang tidak digunakan lagi menghasilkan peringatan tetapi masih bisa dipanggil. (Peringatan)
Fungsi usang menghentikannya dari dipanggil seluruhnya. (Kesalahan)
atau gunakan Pilihan lain seperti iOS, macOS, watchOS, tvOS ...
sumber
Jika
deployment target
ini9.0
dan1.
<ObsoletedVersion>
==10.0
-warning
2.
<ObsoletedVersion>
==8.0
-compile error
sumber