我重构了一些代码,在一个子类中没有错误,在第二个子类中我得到了这个错误。
在第一种情况下,界面如下所示:
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#import <QuartzCore/QuartzCore.h>
#import "ResultsHeaderView.h"
#import "ManagingView.h"
#import "CommonEventsTableVC.h"
@class ResultCell;
@interface ResultsTableVC : CommonEventsTableVC <UITableViewDataSource, UITableViewDelegate, NSFetchedResultsControllerDelegate, resultsHeaderDelegate>{
在第二种情况下,出现错误,界面如下所示:
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#import "Constants.h"
#import "ManagingView.h"
#import "ResultsHeaderView.h"
#import "CommonEventsTableVC.h"
@class ResultCell;
@interface FavoritesTableVC : CommonEventsTableVC <UITableViewDataSource, UITableViewDelegate, NSFetchedResultsControllerDelegate, resultsHeaderDelegate>{
第二种情况下@interface 行上的编译器错误是“找不到'CommonEventsTableVC' 的接口声明,'FavoritesTableVC' 的超类。
我看不出问题。
更新
我能够使用此代码进行无错误编译,但替代方法(如下所示)由于某种原因不起作用:
CommonResultsTableVC.h
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
//#import "MapController.h"
//#import "DataInterfaceObject.h"
#import "ManagingView.h"
#import "ResultsHeaderView.h"
@class MapController;
@class DataInterfaceObject;
@class ResultCell;
@interface CommonEventsTableVC : UIViewController {
@private
DataInterfaceObject *dataInterface_;
MapController *mapController_;
id<managingView> managingViewDelegate_;
}
@property (nonatomic, assign) id<managingView> managingViewDelegate;
@property (nonatomic, assign) DataInterfaceObject *dataInterface;
@property (nonatomic, assign) MapController *mapController;
- (id) initWithFrame:(CGRect)frame andController:(id<managingView>)_managingViewController;
@end
结果表VC.h
#import <QuartzCore/QuartzCore.h>
#import "CommonEventsTableVC.h"
@interface ResultsTableVC : CommonEventsTableVC <UITableViewDataSource, UITableViewDelegate, NSFetchedResultsControllerDelegate, resultsHeaderDelegate>{
NSFetchedResultsController *fetchedResultsController_;
UITableView *tableView_;
}
...
收藏夹TableVC.h
#import "Constants.h"
#import "CommonEventsTableVC.h"
@interface FavoritesTableVC : CommonEventsTableVC <UITableViewDataSource, UITableViewDelegate, NSFetchedResultsControllerDelegate, resultsHeaderDelegate>{
...
}
...
@end
这是替代方案,它不起作用。我不知道为什么。导入类头文件应该是替代@class 引用的可行方法,但是会发生各种错误。这些错误甚至在 import 语句引用的类文件中。
CommonResultsTableVC.h 替代方案(失败)
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#import "MapController.h" // uncommented
#import "DataInterfaceObject.h" // uncommented
#import "ManagingView.h"
#import "ResultsHeaderView.h"
//@class MapController;
//@class DataInterfaceObject;
@class ResultCell;