【问题标题】:Why I am getting an error while forward declaring root class in Objective-C?为什么在 Objective-C 中向前声明根类时出现错误?
【发布时间】:2013-06-12 07:27:08
【问题描述】:

例子:

@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 文件完成,因为它们代表编译器每次调用的新任务。

标签: objective-c xcode forward-declaration


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 2013-04-02
    • 2023-03-25
    • 1970-01-01
    • 2019-08-24
    相关资源
    最近更新 更多