2

iPhoneプロジェクトをコンパイルできません。循環参照の検索

Cannot find interface declaration for 'NSObject', superclass of 'CType'.

これは、同じヘッダファイルでもあり、他のエラーの多くの結果:私のCType.hで、私はエラーを取得しています。

これは私のプロジェクトでは循環参照が原因である可能性があると読んでいます。したがって、宣言を前進させるためにヘッダのインポートの多くを変更しようとしました。まだフォワード宣言をしていないものがいくつかあります(たとえば、クラスが別のクラスを継承している場合は、インポートが必要で、代理人を使用している場合もあります)。

私は自分のプロジェクトを通して何回も検索してきましたが、私は循環参照を見つけることができませんでした。循環参照を見つけるためのヒントやトリックはありますか?私はそれが私のCTypeと関係があると思ったが、それほどそうは思わない。

EDIT:

これは私のctype関数である:

インタフェース:

#import <Foundation/Foundation.h> 

@interface CType : NSObject 

/* 
* Type ID 
*/ 
@property (nonatomic, assign) NSInteger typeId; 

/* 
* Type 
*/ 
@property (nonatomic, strong) NSString *type; 

/* 
* Initialize with type ID and type 
*/ 
- (id)initWithId:(NSInteger)typeId type:(NSString *)type; 

/* 
* Type with type ID and type 
*/ 
+ (CType *)typeWithId:(NSInteger)typeId type:(NSString *)type; 

@end 

実装:

#import "CType.h" 

@implementation CType 

/* Create setters and getters */ 
@synthesize typeId; 
@synthesize type; 

/* Initialize with type ID and type */ 
- (id)initWithId:(NSInteger)_typeId type:(NSString *)_type 
{ 
    if (self = [super init]) 
    { 
     self.typeId = _typeId; 
     self.type = _type; 
    } 

    return self; 
} 

/* Type with type ID and type */ 
+ (CType *)typeWithId:(NSInteger)typeId type:(NSString *)type 
{ 
    return [[CType alloc] initWithId:typeId type:type]; 
} 

@end 
+0

あなたのCTypeを見てみましょう。 – jrtc27

+0

私はCTypeを表示するように質問を更新しました。 – simonbs

+0

クリーニングとリビルドを試しましたか?また、CTypeから別のクラスにクラス名を付けてみましたか? –

答えて

2

私は@Hotリックスに同意する傾向があります。理論的にはコードに何も問題はないので、これは破損したファイルまたは誤設定である可能性があります。

これは私が示唆しているものです:

は(ctype関数以外のものをという名前の)新しいクラスを作成し、新しいクラスにctype関数からの上にコードを移行します。その後、古いCTypeファイルを削除します。その時点で問題が解決したら、新しいクラスの名前をCTypeに変更して何が起こるかを確認してください。また、アプリケーションのprefix.pchファイルを確認して、そこにインポートされているヘッダーを確認してください。

+0

このエラーがなぜ発生したのかわかりません。あなたが提案した通りに、新しい名前で新しいファイルを作成し、コードを 'CType'から新しいクラスに移動しました。エラーはありません。 'CType'に名前を変更するとエラーが出ます。今はうまくいきましたが、なぜこれが起こったのか混乱しました。 – simonbs

+0

どこかに 'CType'の' #define'があると思います。または、接頭辞ファイルに含まれるもので定義されたクラスです。 –

+0

が偶然だったかもしれませんが、私はCTypeとCTypeViewをプロジェクトに持っていましたが... CTypeViewにデリゲートを含めることはできませんでしたが、それをクリックして 'show declaration'は正常に動作しました。 Go figure。 CTypeをBTypeに名前を変更した後、正常に動作しました... – MobileVet