Apakah ada cara untuk menyembunyikan peringatan di Xcode?
Misalnya saya memanggil metode tidak berdokumen dan karena metode tersebut tidak ada di header saya mendapatkan peringatan tentang kompilasi. Saya tahu saya bisa menambahkannya ke tajuk saya untuk menghentikan peringatan, tetapi saya bertanya-tanya apakah ada cara selain menambahkannya ke tajuk (jadi saya bisa menjaga tajuk tetap bersih dan standar) untuk menekan peringatan? Pragma atau sesuatu?
objective-c
xcode
cocoa
cocoa-touch
suppress-warnings
kdbdallas.dll
sumber
sumber
BOOL ok = [[NSCalendar currentCalendar] rangeOfUnit:NSMonthCalendarUnit startDate:&d interval:NULL forDate:self]; NSAssert1(ok, @"Failed to calculate the first day the month based on %@", self);
Jawaban:
Untuk menonaktifkan peringatan per file, menggunakan Xcode 3 dan llvm-gcc-4.2 Anda dapat menggunakan:
Di mana nama peringatan adalah beberapa bendera peringatan gcc.
Ini mengesampingkan semua tanda peringatan pada baris perintah. Itu tidak bekerja dengan semua peringatan. Tambahkan -fdiagnostics-show-option ke CFLAGS Anda dan Anda dapat melihat flag mana yang dapat Anda gunakan untuk menonaktifkan peringatan itu.
sumber
#pragma GCC diagnostic ignored "-Wwarning-flag"
sudah dihapuswarning-flag
dengan salah satu peringatan yang tercantum di gcc.gnu.org/onlinedocs/gcc/Warning-Options.htmlada cara yang lebih sederhana untuk menyembunyikan peringatan variabel yang tidak digunakan :
EDIT: sumber: http://www.cocoadev.com/index.pl?XCodePragmas
PEMBARUAN: Saya menemukan solusi baru, yang lebih kuat
User-Defined
: temukan (atau buat jika Anda tidak menemukannya) kunci:GCC_WARN_UNUSED_VARIABLE
setel keNO
.EDIT-2 Contoh:
kompilator menunjukkan peringatan variabel yang tidak digunakan untuk
ok
.Larutan:
NB: Anda juga dapat mengatur / mengatur ulang peringatan lainnya
GCC_WARN_ABOUT_RETURN_TYPE
::YES/NO
sumber
Untuk gcc Anda bisa menggunakan
Anda dapat mempelajari pragma GCC di sini dan untuk mendapatkan kode peringatan peringatan, buka Report Navigator (Command + 9), pilih build paling atas, perluas log (tombol '=' di sebelah kanan), dan gulir ke bawah dan di sana kode peringatan Anda berada dalam tanda kurung siku seperti ini
[-Wshadow-ivar]
Untuk dentang Anda bisa menggunakan
sumber
Untuk menekan peringatan untuk file individu lakukan hal berikut:
pilih file di proyek xcode. tekan dapatkan info, buka halaman dengan opsi build, masukkan -Tidak- untuk meniadakan peringatan:
misalnya
Anda bisa mendapatkan nama peringatan jika Anda melihat pada pengaturan proyek, lihat peringatan GCC yang terletak di bagian bawah halaman tab build, dengan mengklik setiap peringatan itu akan memberi tahu Anda nama parameter peringatan:
misalnya
sumber
...m:45:69: Incompatible pointer types sending...
saya membuka penjelasan build dan menemukan peringatan ini:[-Wincompatible-pointer-types]
saya baru saja mengganti namanya-Wno-incompatible-pointer-types
dan menambahkannya sebagai bendera ke.m
file saya ... boom tidak ada lagi peringatan ... +10 jika saya bisaDengan Objective-C, sejumlah kesalahan serius hanya muncul sebagai peringatan. Tidak hanya saya tidak pernah menonaktifkan peringatan, saya biasanya mengaktifkan "Perlakukan peringatan sebagai kesalahan" (-Kesalahan).
Setiap jenis peringatan dalam kode Anda dapat dihindari dengan melakukan sesuatu dengan benar (biasanya dengan mentransmisikan objek ke jenis yang benar) atau dengan mendeklarasikan prototipe saat Anda membutuhkannya.
sumber
Untuk menghilangkan peringatan: coba buat antarmuka kategori untuk objek yang dimaksud
Selain itu, saya sangat menyarankan agar tidak memanggil metode tidak berdokumen dalam kode pengiriman. Antarmuka dapat dan akan berubah, dan itu akan menjadi kesalahan Anda.
sumber
http://nshipster.com/pragma/#inhibiting-warnings - lompat ke bagian peringatan penghambat
sumber
Buat file header baru yang terpisah bernama 'Undocumented.h' dan tambahkan ke proyek Anda. Kemudian buat satu blok antarmuka untuk setiap kelas yang ingin Anda panggil fungsi tak berdokumen dan berikan setiap kategori '(Tak berdokumen)'. Kemudian masukkan saja satu file header itu ke PCH Anda. Dengan cara ini file header asli Anda tetap bersih, hanya ada satu file lain yang harus dipertahankan, dan Anda dapat mengomentari satu baris di PCH Anda untuk mengaktifkan kembali semua peringatan.
Saya juga menggunakan metode ini untuk fungsi yang didepresiasi di 'Depreciated.h' dengan kategori '(Depreciated)'.
bagian terbaiknya adalah Anda dapat secara selektif mengaktifkan / menonaktifkan peringatan individu dengan mengomentari atau menghapus komentar pada prototipe individu.
sumber
Menekan peringatan tertentu itu tidak aman. Kompilator perlu mengetahui tipe argumen dan kembali ke metode untuk menghasilkan kode yang benar.
Misalnya, jika Anda memanggil metode seperti ini
[foo doSomethingWithFloat: 1.0];
yang membutuhkan float, dan tidak ada prototipe yang terlihat, maka compiler akan menebak bahwa metode tersebut membutuhkan double, bukan float. Hal ini dapat menyebabkan error dan nilai yang salah ditafsirkan. Dalam contoh di atas, pada mesin endian kecil seperti mesin intel, metode penerima akan melihat 0 lulus, bukan 1.
Anda bisa membaca alasannya di i386 ABI docs , atau Anda bisa memperbaiki peringatan Anda. :-)
sumber