2

iPhone 프로젝트를 컴파일 할 수 없습니다.순환 참조 찾기

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

이 같은 헤더 파일에 또한 다른 사람의 많은 오류가 발생합니다 내 CType.h에서 나는 오류를 얻고있다.

내 프로젝트에서 순환 참조가 원인 일 수 있음을 읽었습니다. 따라서 필자는 많은 헤더 가져 오기를 전달 선언으로 변경하려고했습니다. 아직 정식 선언을 할 수 없었던 클래스가 아직 있습니다 (예 : 클래스가 다른 클래스에서 상속 한 경우 가져 오기가 필요하고 대리자를 사용하는 경우 가능).

프로젝트를 여러 번 검색했지만 순환 참조를 찾을 수 없었습니다. 순환 참조를 찾기위한 팁이나 트릭이 있습니까? 나는 그것이 내 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 
+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에서 대리인을 포함 할 수 없지만 클릭하고 '표시 선언'이 정상적으로 작동합니다. 그림을 이동. CType을 BType으로 이름을 바꾼 후 잘 작동했습니다 ... – MobileVet