Xcode 8 和预处理宏

6
自从最新的XCode 8.1(Build 8B62)更新以来,我在使用预处理宏的语法高亮/代码自动补全方面遇到了奇怪的问题。 在更新之前,我一直在使用XCode 8 GM seed,预处理宏工作得非常好,但现在当我选择一个方案时,XCode无法识别正确的目标。 例如,我有一个控制器静态库,其中包含2个目标 - 一个用于iOS,另一个用于Apple Watch。 在每个目标中,我使用一个宏(APP / WATCH)来进行特定于平台的操作,但是当我在APP目标中时,Xcode编辑器将代码突出显示为WATCH目标,而实际上针对此目标的代码没有高亮显示或代码自动完成。 Xcode似乎随机检测来自不同目标的宏。 然而,编译器始终可以检测到正确的代码,并且工作完美无缺,因此代码本身没有问题,只是编辑器出现了问题。 此外,当我启动Xcode时,代码会被高亮显示约一秒钟,然后又变成白色文本。 删除和重新添加所有方案无效,清理和删除Derived Data也无效。 是否有人遇到过相同的问题,甚至有解决方案吗? 编辑:我尝试了一些目标和宏,并发现Xcode只会采用来自一个目标的宏,并且会丢弃所有其他目标,无论选择什么目标。 有什么帮助吗?

我也遇到了同样的问题。有找到解决方案的好运吗? - Alejandro Cotilla
我也遇到了相同的问题!你找到什么东西了吗? - guidev
很遗憾,我很快将编写一个错误报告。猜想是因为没有人在那里使用 objc,所以苹果公司并没有意识到这个 bug。 - optz
可以确认在Xcode 8.2.1(8C1002)中仍存在此错误。语法高亮和代码自动完成从第一个定义的目标中提取预处理器宏,而不是活动目标。 - marinosb
2个回答

0

这是XCode 8中的一个实际bug。随着XCode 9(截至2017年9月beta 6)的发布,它终于得到了解决。


0

首先尝试“清空构建”……如果这不起作用,那么尝试以下步骤:

在未预编译头文件中的预处理器宏中,有两个子标题:

未在预编译头文件中使用的预处理器宏
Debug +
Release +

当你将鼠标悬停在加号旁边时,会出现一个加号。按下这两个加号,你应该会看到:

未在预编译头文件中使用的预处理器宏
Debug +
任何架构|任何SDK
Release +
任何架构|任何SDK

添加这两个额外条目后,您无需在此处输入任何内容。完成后,请尝试进行另一次清空构建。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接