1

我重构了一些代码,在一个子类中没有错误,在第二个子类中我得到了这个错误。

在第一种情况下,界面如下所示:

#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;
4

0 回答 0