ビュー コントローラーの 1 つをサブクラス化し、新しいクラスのヘッダー ファイルを他のヘッダー ファイルの 1 つに #import しようとしました。
その #import を含めるとすぐに、ビルド全体が狂ってしまい、次のような多くのクラスでエラーが発生します。
- プロトコル宣言が見つかりません...
- インターフェイス宣言が見つかりません...
- 不明な型名...
- 互換性のないポインター型...
これらのエラーはすべて、新しいクラス、スーパークラス、またはインポートされたファイルに直接関連していないファイルにあります。
#import を削除するとすぐに、ビルドは問題ありません。
ファイル ReadOnlySearchVC.h および ReadOnlySearchVC.m 内のサブクラス定義を次に示します。ご覧のとおり、これは最初に新しいクラスを作成したときに Xcode によって作成された単なるテンプレートです。
サブクラスのヘッダー ファイル:
#import "AdvancedSearchFormVC.h"
@interface ReadOnlySearchVC : AdvancedSearchFormVC
@end
サブクラスのコードファイル:
#import "ReadOnlySearchVC.h"
@interface ReadOnlySearchVC ()
@end
@implementation ReadOnlySearchVC
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
ここに、クラス ResultsHeaderView のサブクラス ReadOnlySearchVC をインポートするヘッダー ファイルを示します。
参照クラスのヘッダー ファイル:
#import <UIKit/UIKit.h>
#import "ReadOnlySearchVC.h" // this is the offending line
@class SearchTerms;
@class DataInterfaceObject;
@class MapController;
@protocol resultsHeaderDelegate
- (void) collapseSection:(NSInteger) section;
- (void) expandSection:(NSInteger) section;
@optional
- (void) deleteSection:(NSInteger) section;
- (void) headerDeleteButtonWillShow;
- (void) headerDeleteButtonDidHide;
@end
@interface ResultsHeaderView : UIView <UIGestureRecognizerDelegate>{
... the rest of the file ...
2 行目#import "ReadOnlySearchVC.h"
は、問題を作成しています。
Xcode を 4.3.1 から 4.3.3 に更新しましたが、変わりませんでした。クリーンビルドを行いましたが、変わりませんでした。
ある種の循環参照があるとしか想像できませんが、対処方法がわかりません。
これは少し奇妙です。なぜなら、最初はスケルトン コードだけで動作していたからですが、上に示したものも含まれています。上記の 2 つのクラスに残りのデザインを追加したある時点で、それが壊れてしまいました。その理由はわかりません。これらの基本に戻しても、まだ問題が示されています。
誰かが私が何を見ているのか分かりますか?