我遇到了一个Objective-C问题,对我来说似乎没有任何意义。我是一个比较精通的ObjC程序员,并且了解整个“转发声明”概念,但是这个问题让我抓狂了。所以这是交易:

ClassA是我的Xcode项目中的仅项目类。
ClassB是ClassA的子类,它是公共(public)的,并且导入到我的框架的 header 中。

构建时出现“找不到'ClassA'的接口(interface)声明,'ClassB'的父类(super class)...”错误。我已经在类B.h中放入了@class ClassA;前向声明,但这似乎无法解决问题。当我将@class ClassA;更改为#import ClassA.h时,它可以正常工作。但是,由于ClassA仅用于项目,因此从属项目无法构建ClassB,因为它无法访问ClassA的源。

任何帮助将不胜感激,我希望这是有道理的。谢谢!

最佳答案

要对一个类进行子类化,父类(super class)的完整声明必须对编译器可用。 @class仅允许引用所述类的实例-允许A *foo;

子类化需要更多的元数据(至少,它是在旧版运行时下完成的-我认为没有完整的super的@interface可能可以支持子类化。从技术上讲是可行的,但可能没有用。)

关于objective-c - @class之后的"Cannot find interface declaration error...",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3431795/

10-12 03:35