实现类:找不到超类

时间:2011-08-04 22:33:29

标签: iphone objective-c superclass

我有 ForceGaugeViewController 类和 ForceGaugeController 类。我正在尝试使ForceGaugeController类成为ForceGaugeViewController的子类,但我收到错误。

错误:

  

无法找到ForceGaugeViewController的接口声明   ForceGaugeController类的超类。

ForceGaugeViewController.h

#import <UIKit/UIKit.h>
#import <math.h>
#import "HardwareController.h"
#import "ForceGaugeController.h"

@interface ForceGaugeViewController : UIViewController{
}
end

ForceGaugeViewController.m

#import "ForceGaugeViewController.h"

@implementation ForceGaugeViewController

ForceGaugeController.h

#import <Foundation/Foundation.h>
#import "ForceGaugeViewController.h"
#import "FMDatabase.h"
#import "FMResultSet.h"

@class ForceGaugeViewController;

// error here
@interface ForceGaugeController : ForceGaugeViewController{
}
@end

ForceGaugeController.m

#import "ForceGaugeController.h"

4 个答案:

答案 0 :(得分:7)

您不仅可以转发引用将继承的类或将要实现的协议。您只需要在已经执行的标头中导入超类,然后删除@class声明。

编辑:此外,超类ForceGaugeViewController不应在头文件中包含子类ForceGaugeViewController

<强> ForceGaugeController.h

#import <Foundation/Foundation.h>
#import "ForceGaugeViewController.h"
#import "FMDatabase.h"
#import "FMResultSet.h"

@interface ForceGaugeController : ForceGaugeViewController{
 }
@end

答案 1 :(得分:5)

请务必避免循环导入: 确保不要将任何头或实现子类文件导入到超类接口声明所在的超类文件中(.h文件)

答案 2 :(得分:0)

您在ForceGaugeViewController.h中包含ForceGaugeController.h  并在ForceGaugeController.h中包含ForceGaugeViewController.h。循环包含会混淆编译器,这可能是错误的。

类的头文件只需要包含框架(即UIKit),子类以及类符合的任何协议。前向声明将对实例实例变量/方法参数/属性的类进行。

答案 3 :(得分:0)

删除该行:

@class ForceGaugeViewController;

您已经通过ForceGaugeController.m文件顶部的头文件导入 ForceGaugeViewController 类。


编辑1

正如@Chris Devereux指出的那样,你的头文件中有一个循环引用,你也想要摆脱它。


编辑2

不确定我是如何错过ForceGaugeController.h文件中的自导入的。我认为这是一个错字,但如果不是,我确定你知道你必须删除它。