0

代码完成在 #if 和 #endif 中不起作用

环境:最新Xcode版本:4.6.2

#if defined(LITE_VERSION)

  //code here has no or very limited auto completion

#endif

目标设置为精简版,因此宏 LITE_VERSION 实际上已经定义。

我已经手动删除了所有派生数据。(顺便说一下,这个特定项目的组织者窗口中的删除派生数据按钮是灰色的)

如果我只是在源代码中添加一个#define LITE_VERSION,代码完成将起作用。但是,我认为这是一个肮脏的修复并且容易出错。

这个问题在各种 Xcode 版本中持续了一年多,现在我有越来越多的代码要为 lite 版本编写,我真的很感激一个永久的解决方案。

PS:在写这个问题的同时,我也在不断的排查问题,终于找到了解决方案,所以我把这个作为一个自我回答的问题。希望它会帮助其他人。

4

1 回答 1

1

编辑:Apple 确认这是一个错误。

编辑:代码完成只是工作了一段时间,然后停止工作,真的很奇怪。

原答案:

终于找到了真正的原因。

我为精简版定义的宏似乎适用于真正的编译,但是,在编辑器中,宏不起作用。

所以我检查了建筑设置中的宏定义,并在谷歌上寻找在 xcode 中定义宏的正确方法,这个链接真的很有帮助。

也就是说,我从下面更改了宏设置: 在此处输入图像描述

至:

在此处输入图像描述

并再次清理派生数据,现在它可以工作了!

这可能与从 GCC 设置到 LLVM 设置的转换有关。

于 2013-07-07T10:27:10.880 回答