具有常量问题的预编译标头

时间:2012-08-16 15:53:49

标签: objective-c xcode constants prefix undeclared-identifier

我的项目中有一些常量文件“Constants.h”,我将其包含在Prefix.pch文件中,以供项目中的所有类使用。它们只包含一堆#define语句。

我的类不识别这些常量(没有自动完成),Xcode每次使用时都会给出“未声明的标识符”错误。但是,当我运行项目时,一切正常(设置为忽略错误)。

有什么办法可以摆脱这些警告吗? #pragma在前缀文件中忽略它们还是什么?我尝试了很多选项,包括在构建设置中将“预编译前缀头”设置为NO。

有什么想法吗?

编辑: 我尝试删除派生数据和清理/删除构建文件夹无济于事。

值得注意的是,我的项目中有3个目标,而该项目中有另一个项目。

此外,一些#imports导入普通类。就像UIFont和Analytics类的类别扩展一样。这会影响吗?

4 个答案:

答案 0 :(得分:10)

要解决此问题,我必须在目标的Build Settings中将'Precompile Prefix Header'标志更改为NO。通过执行此操作,您将失去通过缓存编译头文件实现的任何构建性能,但在我的情况下,我的前缀标头非常小,所以我不会看到构建所需的时间。

答案 1 :(得分:3)

尝试删除项目派生数据。 Xcode有时需要重新索引你的项目,以消除这样的“错误”。

组织者>项目>你的项目

单击“派生数据”行右侧的“删除”按钮。

立即退出Xcode,然后重新打开。

答案 2 :(得分:2)

我有PCH文件导入带有很多宏的.h文件(具体来说,我使用MJGAvailability标头,当我使用比我的部署目标更新的功能时会发出警告。 替换:

#import "MJGAvailability.h"

#include "MJGAvailability.h"

为我解决了这个问题。

答案 3 :(得分:0)

我的一个目标中有一个预处理器宏,我从“预处理器宏”移动到“未在预编译头中使用的预处理器宏”,这解决了这个问题。