54

安装 CocoaLumberjack 的日志压缩器类后,我遇到了这种烦人的行为:Xcode 抱怨有许多未声明的标识符并给了我很多错误(不是警告,而是带有红色图标的错误)。

问题是我可以很好地编译和运行我的 iPad 应用程序,但 Xcode 不会执行任何自动完成功能。我尝试清理构建文件夹(Product > option+ Clean),并删除派生数据。我也重启了也没用。

正如你可以想象的那样,这是一个痛苦的工作。我确实在以前版本的 Xcode 上发生过这种行为;它与我的预编译头文件中的内容有关,但使用上面的解决方案总是可以解决它。我目前正在使用 Xcode 4.4 (4F250)。

我得到的示例错误:

Semantic Error: use of undeclared identifier 'DDTTYLogger'

即使是我自己编写的类,并且自安装 CocoaLumberjack 压缩器类以来没有改变,也会发生上述情况。

4

17 回答 17

91

经过多次尝试使用以下方法后,我终于解决了这个问题:

从我的 Prefix.pch 中删除最后一个 #import 并重新构建。会发生错误(显然)。将线路放回原处并重新构建。不会显示任何错误,大约 10 秒后,错误会再次出现。

重复上面的操作,除了最后一个#import,删除最后两个导入,然后是三个、四个等。我这样做直到我删除了五个导入,当我把它们放回去等待时,Xcode 停止抱怨。

请注意,这根本没有发生在我身上。我在某处的博客上阅读了这个解决方案。

奇怪的错误...

于 2012-08-19T23:27:44.450 回答
11

打开构建设置并将“Precompile Prefix Header”设置为“No”,这解决了我的问题。

感谢:https ://stackoverflow.com/a/7035492/936957

于 2013-12-11T16:00:35.940 回答
9

我在所有最新版本的 Xcode 中不断遇到这些问题,包括 Objective-C 和 Swift。

我今天注意到我在一个特定的类文件中遇到了错误。我将它从它所在的一些额外目标中删除,错误终于消失了!

我认为 Xcode 目前在处理多个目标时存在一些基本错误。我的理论是,如果没有构建另一个目标,您基本上会看到来自该目标的错误。无论如何希望这可以帮助某人。

于 2017-01-14T01:25:37.663 回答
4

不错,如果您按照以下步骤操作-

1-清理Xcode(Cmd+Shif+K)

2-清除派生数据(Cmd+Shift+G)

输入此路径(~/Library/Developer/Xcode/DerivedData/)

3-退出并再次打开 Xcode。

于 2018-02-06T08:33:58.853 回答
4

此问题可能是由于某些文件的“目标成员身份”设置不一样而导致的。

示例

XYZ 类放在文件“a.swift”中,并在文件“b.swift”中使用。但是“a.swift”的“Target Membership”设置与b.swift的“Target Membership”设置不同。

检查“目标会员”设置如下:

在此处输入图像描述

在此处输入图像描述

于 2018-06-27T03:21:52.477 回答
3

我在通过cocoapods. 转到Build Settings并搜索“允许框架模块中的非模块化包含”,然后将其设置为Yes成功。

于 2016-05-04T14:32:18.670 回答
2

当我不小心按下时,我在 Xcode 10.1 上有它:

Cmd+Shift+U - (为测试而构建

尝试清理(Cmd+Shift+K),然后:

Cmd+Shift+R构建运行

于 2019-05-13T12:28:22.000 回答
1

更新到 Xcode 11 后,我遇到了同样的问题。我尝试了所有提到的建议(清理文件夹、打开/关闭不同的设置、重新启动 xCode),但没有任何帮助。另外,我在 C 语言中有一个大项目,所以,我想继续使用预编译的头文件。

最后我发现简单的重启Mac OS就可以解决问题!这确实是一种奇怪的行为,但无论如何我很高兴我找到了解决方案——当大量五颜六色的错误消息四处飘荡时,很难编写代码。

于 2019-10-26T10:05:36.247 回答
0

我在 Xcode 5.1 中也有同样的事情。

我通过确保#import 之间没有空行来修复它

于 2014-05-21T06:11:09.977 回答
0

我从 .pch 文件中删除了一些额外的空格和额外的行,它 xcode 停止抱怨

于 2014-12-29T09:30:16.070 回答
0

我遇到了类似的问题。

解决此问题的替代选项是打开管理器并删除项目的派生数据或删除管理器项目选项卡中的所有项目。它工作正常..

于 2014-02-12T09:51:27.467 回答
0

对我来说,它有助于清理项目。XCode->产品->清理

于 2013-05-27T14:08:03.243 回答
0

这也发生在我身上,但清洁并没有解决它。所做的是退出并重新打开XCode。之后,所有的幻像错误都消失了。对于那些想知道的人,您在关闭时打开的选项卡在您重新打开时仍将打开。

于 2017-11-20T18:17:08.430 回答
0

在我的情况下(混合 objc/swift 项目),至少部分错误是由于缺少某些使用过的框架的导入引起的,例如“导入 UIKit”。项目已成功编译,因为框架无论如何都包含在 Prefix.pch 文件的标头中。但是显示了错误,例如关于找不到 UILabel 扩展中定义的方法,是的,这个扩展没有“导入 UIKit”。所以我认为这些错误在大多数情况下取决于 Prefix.pch 预编译/更新。触摸 Prefix.pch、清理、删除派生数据、关闭/打开 XCode 有时会有所帮助,但并非总是如此。

于 2022-01-18T21:06:12.870 回答
0

打开一个终端并创建一个可以通过命令行访问的漂亮小功能......

nano ~/.bashrc

添加(在尖括号之间进行必要的替换)

cycle() {
  git stash save "BACKUP"
  git checkout <<SOME OTHER BRANCH>>
  git branch -D $1
  xcodebuild -allowProvisioningUpdates -workspace <<YOUR WORKSPACE>>.xcworkspace -scheme <<YOUR SCHEME>> -configuration Release clean
  git checkout $1
}

^X并按照提示保存,然后输入source ~/.bashrc以使其对当前终端会话可见。

确保你的分支被推送到原点,因为我们要删除它:)

使用调用函数cycle <<MY BRANCH>>(一旦运行,您可能需要调用git stash pop以恢复任何工作副本更改)

希望这对你有用!Xcode,开始你的游戏吧!

于 2019-08-14T20:22:03.940 回答
0

在 Xcode 版本 10.1 (10B61) 上运行,我将构建设置“增加预编译头文件的共享”设置为NO. 我在一个.xcworkspace中工作,许多项目共享相同的框架,并且没有 Objective-C 桥接头(这意味着我自己没有添加任何 obj-c 代码)。我不确定 Xcode 何时默认取消了.pch文件,但我的项目中没有这些文件。

Xcode 构建设置:增加预编译头文件的共享 = 否

于 2018-12-14T16:12:34.673 回答
0

我最近有这个问题。在某些情况下,可以通过删除ModuleCache里面的DerivedData文件夹以及DerivedData. 请注意,在执行此操作之前必须退出 Xcode。

于 2018-01-07T16:10:18.213 回答