Pregunta

I have a few constants files "Constants.h" in my project that I am including in the Prefix.pch file to be available to all the classes in my project. They just contain a bunch of #define statements.

My classes don't recognize these constants (no autocomplete) and Xcode gives me "Undeclared Identifier" errors every time I use them. However when I run the project everything works fine (set to ignore errors).

Is there any way I can get rid of these warnings? #pragma ignore them in the prefix file or something? I've tried many options, including setting "precompile prefix header" to NO in build settings.

Any ideas?

EDIT: I have tried deleting derived data and cleaning / deleting build folder to no avail.

It might be worth noting that I have 3 targets in my project, and another project within this project.

Also, some of the #imports import normal classes. Like a category extension on UIFont and an Analytics class. Could this affect it?

¿Fue útil?

Solución 4

I had a preprocessor macro in one of my targets that I moved from 'preprocessor macros' to 'preprocessor macros not used in precompiled headers' and that solved the problem.

Otros consejos

To fix this, I had to change the 'Precompile Prefix Header' flag to NO in my target's Build Settings. By doing this you'll lose any build performance achieved by having a cached compiled header file, but in my case, my Prefix Header is pretty small so I wont see a hit in the time it takes to build.

Try deleting the project derived data. Xcode sometimes needs to re-index your project to remove "errors" such as this.

Organizer > Projects > Your Project

Click on the "Delete" button to the right of the Derived Data row.

Immediately quit Xcode, and then reopen.

I had the PCH file importing .h file with a lot of macros (specifically, I use the MJGAvailability header that warns when I use features that are newer than my deployment target). Replacing:

#import "MJGAvailability.h"

with

#include "MJGAvailability.h"

solved this issue for me.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top