【问题标题】:No visible @interface for没有可见的@interface
【发布时间】:2012-04-30 16:43:49
【问题描述】:

我曾多次收到此错误,但不清楚通常是什么导致了该错误。在堆栈溢出和谷歌上寻找了一个多小时后,我仍然没有答案。有人可以帮忙吗?

我已经看到了几个具体的答案,但没有说明错误发生的原因,只有“do x”或“do y”。

我还没有包含代码,因为我想知道这个错误发生的原因,这样我就可以在以后遇到这个错误时修复我的代码。

【问题讨论】:

  • 你还没有包含代码!?你得到哪个错误?您希望如何解决这个问题?我怀疑@ SO这里有很多通灵者。
  • 我得到的错误是“没有可见的@interface ...”。我将其包含在标题中,但可能也应该将其包含在描述中。

标签: objective-c ios xcode interface


【解决方案1】:

它可能发生的原因有很多,但通常是说在它标记的代码行中,它没有看到任何证据表明您引用的选择器位于它认为对象具有的类型的接口中.

在这个例子中,

No visible interface error

他们用错误的类型声明了operandStack。

在这个

http://www.raywenderlich.com/forums/viewtopic.php?f=2&t=3312

他们在选择器名称中有错字

【讨论】:

  • 感谢您的简单回答,我是新手。如何在界面中添加选择器?
  • 在这种情况下,它只是消息/方法的另一个名称。
  • 基本的 Objective-C 可以在这里找到developer.apple.com/library/ios/#documentation/cocoa/conceptual/…
  • 在我的情况下,我有一个拼写错误的选择器,如:destructveButtonTitle:@"Yup."
【解决方案2】:

您是否有可能在 Xcode 4.2(或更低版本)上运行在 Xcode 4.3 上编写的代码?在 4.3+ 中,Xcode 根本不要求您声明私有方法,它只是假设编写在实现文件中的方法(接口中没有声明)是私有的。但在 Xcode ,而且这些方法至少需要私有声明

【讨论】:

  • Xcode 4.2 之前的编译器还允许您使用未声明的方法而不会出错,前提是它们在使用之前已在文件中定义。
【解决方案3】:

我刚遇到这个问题;我的原因是我将方法设置为类方法而不是实例方法。很傻。

【讨论】:

    【解决方案4】:

    另一个原因可能是在库中使用类别并且您没有在其他链接器标志中设置 -ObjC(或 -all_load)

    【讨论】:

    • 如何设置这个?
    【解决方案5】:

    另一个常见的错误是忘记写 [someInstance setSomeValue:3];而不是 [someInstance someValue:3] (

    【讨论】:

      【解决方案6】:

      当我遇到这个问题时,事实证明 Xcode 在更改 Git 分支后没有重新索引文件。解决办法是Delete Derived Data

      使用 Xcode 10.0 版File -> Workspace Settings...(or Project Settings...) -> click on the little green circle and manually remove all files in DerivedData folder

      【讨论】:

        【解决方案7】:

        NSSavePanel-beginSheetModalForWindow:: 有这个问题,这显然是存在的。我尝试进行干净的重建以及删除 DerivedData,但没有运气。我已经复制粘贴然后进行了修改,但我将其注释掉并输入了对-beginSheetModalForWindow 的调用,它开始工作。据我所知,我在最初的通话中没有任何错误。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-11-07
          • 2015-05-17
          • 1970-01-01
          • 2017-10-13
          • 1970-01-01
          • 1970-01-01
          • 2016-08-05
          相关资源
          最近更新 更多