基础类消息是前向声明错误

Posted

技术标签:

【中文标题】基础类消息是前向声明错误【英文标题】:Foundation class message is a forward declaration error 【发布时间】:2012-04-24 23:57:07 【问题描述】:
NSHost *h = [NSHost hostWithName:name];

我从这行代码中得到两个错误

ARC Issue: Receiver 'NSHost' for class message is a forward declaration. 
ARC Issue: No known class message for selector 'hostWithName:'

四处搜索,我发现前向声明错误通常是由于未能包含某些框架。不过,这种情况很奇怪,因为 NSHost 是 Foundation Framework 的一部分,它是在我的头文件中导入的。是的,我的实现导入了我的头文件。

对 NSHost 的 opt+click 表示 NSHost 是在 NSStream.h 中声明的,而不是在 NSHost.h 中声明的。 NSStream 头文件只声明@class NSHost

Product => Clean 也不能解决任何问题。我很困惑这里的问题是什么:(

编辑: 我认为问题在于 NSHost 不适用于 ios:-/

【问题讨论】:

【参考方案1】:

您应该在文件顶部(或在共享 PCH 中)#importing。

或者,如果你真的真的想走手动路线,#import(假设文件存在)。

【讨论】:

嘿 bbum,我不确定我是否理解您的回答。我的类的头文件被导入到我的实现文件的顶部(我得到错误的地方),<Foundation/Foundation.h> 被导入到头文件的顶部。

以上是关于基础类消息是前向声明错误的主要内容,如果未能解决你的问题,请参考以下文章

“接收器类型'CALayer'例如消息是前向声明”在这里是啥意思?

将结构前向声明为类时出现 Visual C++ 2015 链接器错误

为啥我不能使用双冒号在命名空间中前向声明一个类?

包含命名空间的类模板的转发声明会导致编译错误

英特尔编译器不编译另一个类中的私有前向类声明

子类化视图控制器:前向声明