Header yang telah dikompilasi dengan masalah Konstanta

Saya memiliki beberapa file konstanta "Constants.h" di proyek saya yang saya sertakan dalam file Prefix.pch agar tersedia untuk semua kelas di proyek saya. Mereka hanya berisi sekumpulan pernyataan #define.

Kelas saya tidak mengenali konstanta ini (tidak ada pelengkapan otomatis) dan Xcode memberi saya kesalahan "Pengenal yang Tidak Dinyatakan" setiap kali saya menggunakannya. Namun ketika saya menjalankan proyek semuanya berfungsi dengan baik (disetel untuk mengabaikan kesalahan).

Apakah ada cara untuk menghilangkan peringatan ini? #pragma abaikan saja di file awalan atau apalah? Saya sudah mencoba banyak opsi, termasuk mengatur "header awalan prakompilasi" ke TIDAK dalam pengaturan build.

Ada ide?

EDIT: Saya telah mencoba menghapus data turunan dan membersihkan/menghapus folder build tetapi tidak berhasil.

Mungkin perlu dicatat bahwa saya memiliki 3 target dalam proyek saya, dan proyek lain dalam proyek ini.

Juga, beberapa #imports mengimpor kelas normal. Seperti ekstensi kategori di UIFont dan kelas Analytics. Apakah ini bisa mempengaruhinya?


person TTillage    schedule 16.08.2012    source sumber
comment
Pengidentifikasi yang tidak dideklarasikan adalah kesalahan, bukan peringatan. Anda tidak dapat mengkompilasi dan menjalankan program menggunakan pengidentifikasi yang tidak dideklarasikan.   -  person Martin R    schedule 16.08.2012
comment
Diedit untuk memperbaikinya, maksud saya kesalahan. Saya mengaturnya untuk mengabaikan kesalahan sehingga program masih dapat dikompilasi dan berjalan dengan baik, xcode hanya memberi saya kesalahan ini ketika saya mengedit kode.   -  person TTillage    schedule 16.08.2012
comment
Dan ia tidak langsung mengenalinya setelah dibangun, biasanya hanya ketika saya berada di dalam kelas yang menggunakan konstanta tersebut ia mulai melihat 'kesalahan'   -  person TTillage    schedule 16.08.2012
comment
Apa sebenarnya yang Anda atur untuk mengabaikan kesalahan? Anda tidak dapat mengkompilasi dan menjalankan program yang mengandung kesalahan.   -  person Martin R    schedule 16.08.2012
comment
lebih baik menjawab pertanyaan Anda sendiri daripada mengedit pertanyaan itu sendiri dan menandainya sebagai terselesaikan, sehingga tidak muncul dalam daftar pertanyaan yang belum terjawab.   -  person john.k.doe    schedule 16.08.2012
comment
Saya tidak dapat menjawab pertanyaan saya sendiri karena mereka tidak mengizinkan saya, karena pengguna baru tidak dapat menjawab pertanyaan mereka sendiri dalam waktu 4 jam setelah posting   -  person TTillage    schedule 18.08.2012


Jawaban (4)


Untuk memperbaikinya, saya harus mengubah tanda 'Precompile Prefix Header' menjadi NO di Pengaturan Build target saya. Dengan melakukan ini, Anda akan kehilangan kinerja build apa pun yang dicapai dengan memiliki file header terkompilasi yang di-cache, tetapi dalam kasus saya, Header Awalan saya cukup kecil sehingga saya tidak akan melihat hasil dalam waktu yang diperlukan untuk membangun.

person Peter    schedule 19.12.2012
comment
Ini menyelesaikannya untuk saya juga, tetapi itu membuat kompilasi jauh lebih lambat. Adakah cara untuk menghindarinya? - person fishinear; 11.01.2014

Coba hapus data turunan proyek. Xcode terkadang perlu mengindeks ulang proyek Anda untuk menghapus "kesalahan" seperti ini.

Penyelenggara > Proyek > Proyek Anda

Klik tombol "Hapus" di sebelah kanan baris Data Berasal.

Segera keluar dari Xcode, lalu buka kembali.

person Ian L    schedule 16.08.2012
comment
Sudah mencobanya berkali-kali. Juga mencoba menghapus folder build, membersihkan, dll. Terus muncul kembali. - person TTillage; 16.08.2012
comment
Memecahkan masalah saya, saya terjebak selama satu jam. - person Zeeshan; 03.03.2014

Saya memiliki file PCH yang mengimpor file .h dengan banyak makro (khususnya, saya menggunakan rel Ketersediaan MJGA yang memperingatkan ketika saya menggunakan fitur yang lebih baru dari target penerapan saya). Mengganti:

#import "MJGAvailability.h"

dengan

#include "MJGAvailability.h"

memecahkan masalah ini untuk saya.

person fishinear    schedule 11.01.2014

Saya memiliki makro praprosesor di salah satu target saya yang saya pindahkan dari 'makro praprosesor' ke 'makro praprosesor yang tidak digunakan dalam header yang telah dikompilasi' dan itu memecahkan masalah.

person TTillage    schedule 17.08.2012