45

我遇到了一个非常烦人的问题,它阻碍了我的工作流程。在我的项目中,我到处都有“未声明标识符的用户”错误。它们都参考一个类,特别是一个主题类。我检查了我的导入是否有任何循环引用,没有。我真的很困惑。

这是错误的屏幕截图。我会在构建日志中发布错误以获取更多详细信息,但没有任何错误。它构建和运行得很好......

在此处输入图像描述

我试过清理,删除派生数据......有什么想法吗?

4

12 回答 12

87

我遇到了同样的问题,并注意到所有未声明的标识符都在我的 pch 文件中的文件中声明。

考虑到这一点,我从 pch 文件中删除了其中一条#import 行并重新编译,它按预期失败。然后我将删除的行放回原处,重新编译并正常编译,所有错误错误都消失了。

如果上述解决方案没有,希望这个简单的解决方案可以帮助你们中的一些人。

于 2012-10-26T02:23:17.867 回答
9

不幸的是,这类错误在 Xcode 中很常见。如果它一直自动刷新其错误列表会很棒,但并非总是如此。发生这种情况时,我强烈建议您重新启动 Xcode,这将刷新其错误缓存并有望解决您的问题。

于 2012-08-27T22:00:36.020 回答
4

你如何包括这个类?在大多数情况下,我只是在标题和/或正文中明确包含该类 - 而不是 *.pch 文件。然后这个错误在我的情况下消失了。

有时也可以删除派生数据。您最近是否更改了偏好中的位置。当我将 ramdisk 用于派生数据然后返回默认值时,我也收到此错误。这是最烦人的情况——因为它会导致这个错误出现在几乎每个文件中。

这个错误似乎在 Xcode 4.4 中比以前的版本更频繁地发生。

于 2012-08-27T22:33:39.197 回答
2

您是否正确包含了库文件?看看那个。如果我们没有包含正确的文件,或者缺少某些内容或未连接 UI,有时可能会出现 ARC 问题。

于 2012-08-31T15:55:23.507 回答
1

对我来说,问题是我创建了 UnityInterface.h/m 文件来处理 obj-c 到 c# 的接口。UnityInterface.h 已由 Unity 定义。我将自己的 UnityInterface 重命名为 _UnityInterface,现在一切正常。

于 2016-06-08T16:16:25.520 回答
1

只是为以后可能遇到此问题并且找不到任何这些解决方案的任何人发布此内容:如果您有任何标记为 #if 的语句仅在程序处于调试模式时执行,则显然会导致在内部声明的任何内容当您尝试存档/导出时,它们不会被声明。

于 2016-09-15T18:16:31.177 回答
0

我有同样的问题。关闭和打开 XCode 没有帮助。

我通过检查其他目标中的错误并修复它们来解决它(我的单元测试目标中有大量错误)。我还将标题链接从 h 文件移动到 m 文件。但我很确定,第一件事很关键。

于 2013-08-14T08:07:40.803 回答
0

对于遇到同样问题并尝试了上述所有解决方案但没有结果的其他人,也许您应该尝试像我一样的方法。我只是通过从我的 Mac 上拔下我的 iPhone USB 电缆然后重新插入这些电缆来解决这个问题。之后,再次重建,所有未声明的标识符错误都消失了。

于 2014-09-11T14:04:24.517 回答
0

它编译时错误

Use of undeclared identifier '<class_name>'

我在开发自己的框架和应用程序时遇到了这个问题。Objective-C 消费者 -> Objective-C 静态框架

Report Navigator 有清晰的描述

umbrella header for module '<module_name>' does not include header '<class_name>.h'

解决方案只是#import <class_name>.h在框架目标中添加伞头

于 2019-08-31T15:48:05.950 回答
0

我有同样的错误。就我而言,它在这行代码中:

- (void)playerItemDidReachEnd:(NSNotification *)notification {
      // some code
  }

我的错误信息说:

Use of undeclared identifier 'playerItemDidReachEnd'

我尝试将此行添加到 .h 文件中:

- (void)playerItemDidReachEnd:(NSNotification *)notification;

我清理了它,我重新启动了我的 macbook,但我仍然收到错误消息。

最后,我决定尝试删除 .h 文件中的行。然后我将其粘贴到文本文件中,然后将其复制并粘贴回 .h 文件中。

现在我清理了,瞧!没有更多的错误。去搞清楚。这有时会在 VBA 中发生。不知何故,一行代码中似乎有看不见的格式。所以我认为xCode可能会发生这种情况。将其剪切,粘贴到文本文件中,剪切出文本文件,然后将其粘贴回原来的位置-在我的情况下对其进行了修复。

---- 更新 ----- 以上是我的回答。抱歉,显然还有其他问题。

清洁后 - 我的错误消失了。现在我尝试构建和运行我的应用程序。错误又回来了!所以这次我在剪掉所有的文本后重新创建了类文件,并将其粘贴到一个文本文件中。我对我的 .m 和 .h 文件都这样做了。但是现在尝试运行后错误又回来了。对不起。我不知道如何完全删除此文本,因为它不是答案。

试图构建和运行我的应用程序。错误又回来了!

还有一个错误消息,我缺少括号( } )。最后,我查看了此方法之前的方法,果然它缺少结束括号!就是这样!

于 2015-11-22T05:04:00.963 回答
0

尝试单击Product -> Analyze,然后单击Product -> Build。这对我有帮助。

于 2021-09-18T10:56:58.193 回答
0

回答可能有点晚。

我最近遇到了这个问题。我通过更新我的操作系统然后更新 Xcode 来解决这个问题。我尝试单独更新 Xcode 但没有发生,因为 Xcode 9.4 需要 OS High Sierra 10.13。*

快乐更新:)

于 2018-06-28T02:20:14.923 回答