一部のコードをリファクタリングしましたが、1 つのサブクラスではエラーが発生せず、2 番目のサブクラスではこのエラーが発生します。
最初のケースでは、インターフェイスは次のようになります。
#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>{
2 番目のケースでは、エラーが発生すると、インターフェースは次のようになります。
#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>{
2 番目のケースの @interface 行のコンパイラ エラーは、「'FavoritesTableVC' のスーパークラスである 'CommonEventsTableVC' のインターフェイス宣言が見つかりません。
問題がわかりません。
アップデート
このコードを使用してエラーなしでコンパイルできましたが、代替 (以下に示す) は何らかの理由で機能しません。
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 参照の実行可能な置き換えになるはずですが、あらゆる種類のエラーが発生します。これらのエラーは、インポート ステートメントによって参照されるクラス ファイルにもあります。
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;