0

ビュー コントローラーの 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 つのクラスに残りのデザインを追加したある時点で、それが壊れてしまいました。その理由はわかりません。これらの基本に戻しても、まだ問題が示されています。

誰かが私が何を見ているのか分かりますか?

4

0 に答える 0