2

iPhone プロジェクトをコンパイルできません。私CType.hはエラーが発生しています:

'CType' のスーパークラスである 'NSObject' のインターフェイス宣言が見つかりません。

これにより、同じヘッダー ファイルにもある他の多くのエラーが発生します。

これは、プロジェクトの循環参照が原因である可能性があることを読みました。したがって、ヘッダーのインポートの多くを転送宣言に変更しようとしました。まだ前方宣言を行うことができていないものもあります (たとえば、クラスが別のクラスから継承している場合、インポートが必要であり、デリゲートを使用している場合。ただし、おそらくこれを回避する方法があります)。

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

編集:

これは私の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
4

1 に答える 1

2

私は@Hot Licksに同意する傾向があります。理論的にはコードに問題はないため、これはファイルの破損または構成の誤りである可能性が非常に高くなります。

これは私が提案するものです:

新しいクラス (CType 以外の名前) を作成し、コードを CType から新しいクラスに移行します。次に、古い CType ファイルを削除します。その時点で問題がなければ、新しいクラスの名前を CType に変更して、何が起こるかを確認してください。また、アプリの prefix.pch ファイルを再確認して、そこにインポートされているヘッダーを確認してください。

于 2012-04-30T18:29:53.753 に答える