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

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> 被导入到头文件的顶部。

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