Prefix.pch:如何不将它用于某些文件?

时间:2016-08-12 15:47:26

标签: objective-c xcode objective-c++ precompiled-headers

如何避免将prefix.pch文件中的import语句添加到名为VMKChilkatWrapper.h的某个.h文件中?

我尝试过以下方法:

#if !__has_include("VMKChilkatWrapper.h")
#if !strcmp(__FILE__, "VMKChilkatWrapper.h")
#if !strcmp(__BASE_FILE__, "VMKChilkatWrapper.h")

但即使经过几个小时的尝试,我也无法发挥作用。这可能吗?

为什么我要这样做?

我有几个.mm个文件(Objective-C ++)。当我将Objective-C类导入其中时,我无法再使用@import

因此,我创建了一个包装类,它是导入我的.mm文件的唯一类。

我还在Prefix.pch文件中使用#ifdef __OBJC__,以避免将我的Objective-C头文件导入到我的.mm文件中。

但是,#ifdef __OBJC__不会阻止我的Prefix.pch文件包含在VMKChilkatWrapper中。因此,@import指令不适用于Prefix.pch文件中的任何文件。

目前,我认为最好的解决方案是删除Prefix.pch文件中的import语句。

1 个答案:

答案 0 :(得分:0)

你不能。

在编译之前,前缀头将添加到每个实现文件中。目前没有关于该文件中包含的其他头文件的信息。

如果你需要这个,你做错了。前缀头的唯一目的是通过预编译一些框架头来加速编译。只需在那里添加内容以便在每个实现文件中都可用,这是一种反模式。