我重构了一些代码,在一个子类中没有错误,在第二个子类中我得到了这个错误。
在第一种情况下,界面如下所示:
#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
ResultsTableVC.h
#import <QuartzCore/QuartzCore.h>
#import "CommonEventsTableVC.h"
@interface ResultsTableVC : CommonEventsTableVC <UITableViewDataSource, UITableViewDelegate, NSFetchedResultsControllerDelegate, resultsHeaderDelegate>{
NSFetchedResultsController *fetchedResultsController_;
UITableView *tableView_;
}
...
FavoritesTableVC.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;