为什么在Objective-C中正向声明根类时出错?

为什么在Objective-C中正向声明根类时出错?,objective-c,xcode,forward-declaration,Objective C,Xcode,Forward Declaration,例如: @class MyRootObject; @interface MyObject : MyRootObject @end 获取表单XCode: Class MyObject defined without specifying a base class. MyRootObject类是: @interface MyRootObject : NSObject - (id)init; @end @implementation MyRootObject - (id)init {

例如:

@class MyRootObject;

@interface MyObject : MyRootObject
@end
获取表单XCode:

Class MyObject defined without specifying a base class.
MyRootObject类是:

@interface MyRootObject : NSObject

- (id)init;

@end

@implementation MyRootObject

- (id)init
{
   self = [super init];

   if(self){
      // some code here
   }

   return self;
}

@end

不能从正向声明的类继承。您需要包含相应的头。

您不能从前向声明的类继承。您需要
#包含相应的头。

旧原因:编译器如何推断实例的大小而不查看其基础?@H2CO3,“搜索”其声明?而不实际声明?如何?@AndrewShmig Xcode可能被视为一个集成环境,但实际上它只是使用一长串命令行参数调用编译器,因此无论Xcode中包含多少文件,编译器仍然可以像从命令行或make文件调用一样工作。它不会搜索未在明确包含的文件中定义的数据类型或任何类似内容,而且必须对每个.m文件进行搜索,因为它们代表编译器在每次调用中的新任务。老原因:编译器如何推断实例的大小而不查看其基础?@H2CO3,“搜索”因为它的声明?没有实际的声明?如何?@AndrewShmig Xcode可能被视为一个集成环境,但实际上它只是使用一长串命令行参数调用编译器,因此无论Xcode中包含多少文件,编译器仍然可以像从命令行或make文件调用一样工作。它不会搜索未在明确包含的文件中定义的数据类型或任何类似内容,而且必须对每个.m文件进行搜索,因为它们代表编译器每次调用的新任务。