Xcode“使用未声明的标识符”错误,编译/运行就好了

时间:2012-08-27 21:44:51

标签: iphone ios xcode ipad compiler-errors

我遇到了令人讨厌的问题,这会妨碍我的工作流程。在我的项目中,我有“未声明的标识符用户”错误。它们都是对单个类的引用,特别是Theme类。我用我的导入检查了任何循环引用,没有。我真的很困惑。

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

enter image description here

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

11 个答案:

答案 0 :(得分:85)

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

考虑到这一点,我从pch文件中删除了一条#import行,并重新编译了哪个失败了。然后我将删除的行重新编入,重新编译并正常编译,所有错误的错误都消失了。

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

答案 1 :(得分:9)

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

答案 2 :(得分:4)

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

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

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

答案 3 :(得分:2)

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

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

答案 6 :(得分:0)

我遇到了同样的问题。关闭并打开XCode没有帮助。

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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

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

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

我的错误消息说:

Use of undeclared identifier 'playerItemDidReachEnd'

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

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

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

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

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

----更新----- 以上是我的答案。道歉,显然还有其他错误。

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

尝试构建并运行我的应用。错误回来了!

还有一个错误消息,我错过了一个方括号(})。最后,我在这个方法之前看了一下这个方法,确定它错过了结束括号!就是这样!

答案 9 :(得分:0)

回答可能会晚一点。

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

快乐更新:)

答案 10 :(得分: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添加到框架目标的伞头中

相关问题