Dengan semua SDK mengambang, sangat berguna untuk dapat membangun beberapa SDK dan platform. Namun, memantul dari 3,2 ke 3.0 dan bahkan kadang-kadang 2.x, saya sering mendapatkan peringatan usang yang melibatkan metode yang telah berubah atau digantikan:
warning: 'UIKeyboardBoundsUserInfoKey' is deprecated.
Karena saya masih ingin menjaga kompatibilitas dengan OS yang lebih lama, dan saya juga berusaha untuk menghapus 'noise' saat membangun, apakah ada cara untuk mematikan atau menonaktifkan peringatan ini?
Jawaban:
Coba
-Wno-deprecated-declarations
, atau pengaturannya yang sesuai di Xcode,GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS
(tip pro: cukup ketik "usang" di pengaturan build untuk menemukan pengaturan spesifik untuk peringatan ini).Versi Xcode saat ini (mis. Xcode 9.2):
Versi kuno Xcode (mis. Xcode 2.x, 3.x):
sumber
Karena saya belum bisa menambahkan komentar ke posting @samiq, saya pikir saya akan mengembangkannya. Masukan arahan yang disebutkan sebelum fungsi / metode di mana Anda menggunakan barang-barang usang. Kemudian Anda dapat mengembalikan pengaturan sebelumnya setelah definisi fungsi berakhir:
sumber
#pragma GCC diagnostics push #pragma GCC diagnostics ignored "-Wdeprecated-declarations" .. .. Code here .. .. #pragma GCC diagnostic pop
karena metode ini akan membawa Anda kembali ke pengaturan apa pun yang ditetapkan sebelumnya .. [ gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html]Dentang menyediakan fitur bagus yang membuat langkah "restore" di pos @manicaesar terlepas dari status peringatan awal:
Mengutip manual Dentang :
sumber
Karena kami cenderung perlu mendukung OS yang lebih lama, tetapi memperhatikan peringatan kami, saya ingin cara yang lebih rapi untuk melakukan ini. Saya menggabungkan ini, terinspirasi oleh beberapa kode Mozilla:
Ini memungkinkan Anda melakukan hal berikut:
Ini juga berfungsi dengan blok kode:
Juga, ketika Anda menjatuhkan dukungan untuk perangkat pra-iOS 7, Anda dapat dengan mudah mencari melalui kode untuk menemukan penggunaan yang sudah usang untuk diperbaiki.
sumber
do { ... } while(0);
diperlukan?do{...}while(0);
diperlukan di sini khususnya? Kenapa tidak adil{...}
? Mengapa tidakif(true){...}
? dllAnda juga dapat menekan peringatan per file dengan menggunakan
yang pada gilirannya membuatnya sedikit lebih baik daripada hanya menekan semua peringatan sekali dan bersama-sama ... setelah semua Anda tahu apa yang Anda lakukan.
sumber
Jika Anda ingin membungkam peringatan Menerapkan metode usang atau Menerapkan kelas usang , gunakan:
sumber
Di pengaturan build Anda, temukan
Deprecated Functions
.sumber
Jika Anda ingin memeriksa selimut untuk semua jenis penghinaan dalam sepotong kode. Silakan gunakan flag -Wdeprecated seperti di bawah ini:
sumber
Untuk menonaktifkan peringatan dari file header pihak ketiga, tambahkan baris berikut di bagian atas file
sumber