【问题标题】:Xcode "Use of undeclared identifier" errors, compiles/runs just fineXcode“使用未声明的标识符”错误,编译/运行得很好
【发布时间】:2012-08-22 09:58:50
【问题描述】:

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

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

我已经尝试清理、删除派生数据...有什么想法吗?

【问题讨论】:

  • 您是否链接到所有正确的库?
  • 你尝试重启 Xcode 了吗?我在更改文件扩展名(主要是.m.mm)时发生了这些类型的错误,并且重新启动 Xcode 通常会修复它。
  • 你说得对。忘记重新编译我的静态库。应该在项目中单独进行编辑。这样做了,它仍然存在。重新启动 Xcode,现在一切都消失了。多谢你们!编辑:没关系,还在发生:(
  • 我在 xcode 7.3 中遇到同样的问题。请为我提供同样的解决方案
  • 即使在现代的 2017 XCode 中,也可能发生这种情况。恼人的。有时重启会有所帮助?

标签: iphone ios xcode ipad compiler-errors


【解决方案1】:

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

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

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

【讨论】:

  • 这个解决方案对我有用。我猜 Xcode 只是需要一个适当的复习。
  • 这对我也有用。我遇到过同样的问题;所有的投诉都集中在我的 PCH 文件中提到的文件中声明的事情上。优秀。谢谢!
  • 感谢也为我解决了这个问题。翻车真烦人。我希望他们尽快修复这个错误!
  • 清理后在 Xcode 5.1.1 上对我有用。男人这真是令人沮丧。并不是说警告阻止了我构建和运行,但它仍然很烦人。
  • @Ben 同意。更新我的 Parse.com SDK 时发生在我身上。这太荒谬了,考虑到“修复”已经 2 岁(并且来自 Xcode 4)并且在 Xcode 6 中仍然失败,这太荒谬了!很高兴其他人知道如何解决这个问题!
【解决方案2】:

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

【讨论】:

  • 结束了工作。我睡觉的时候把她关掉。火了,什么都没有。像这样的错误,当我必须使用这个 IDE 时,当我专业地这样做时,让我发疯......
  • @rnystrom 实际上,我知道还有另一个 IDE,JetBrains 称为 AppCode。我会检查一下,肯定有 30 天的试用期。
【解决方案3】:

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

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

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

【讨论】:

  • 我目前正在使用 pch 文件,但我可能只是删除它并根据需要添加它,因为它非常烦人。
【解决方案4】:

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

【讨论】:

    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

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

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

        【讨论】:

          【解决方案8】:

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

          【讨论】:

            【解决方案9】:

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

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

            我的错误信息说:

            Use of undeclared identifier 'playerItemDidReachEnd'
            

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

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

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

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

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

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

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

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

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

            【讨论】:

              【解决方案10】:

              回答可能有点晚了。

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

              更新愉快:)

              【讨论】:

                【解决方案11】:

                编译时出错

                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 &lt;class_name&gt;.h 添加到框架目标的伞形标题中

                【讨论】:

                  【解决方案12】:

                  尝试点击Product -&gt; Analyze,然后点击Product -&gt; Build。这对我有帮助。

                  【讨论】:

                  • 请编辑帖子以解释它如何“帮助”您。
                  猜你喜欢
                  • 1970-01-01
                  • 2014-08-17
                  • 1970-01-01
                  • 2014-11-14
                  • 2022-03-09
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多