2012-03-16 2 views
0

내 클래스 헤더가 "외부"로 정의 된 다른 헤더에서 선언 된 프로토콜을 찾을 수 없습니다. 구조는 다음과 같다 :프로토콜 시작 ObjC

x1.h 프로토콜
x2.h 수입을 갖는다 x1.h

문제가

그 x3.h가없는 x2.h
x3.h 수입 프로토콜을 찾으십시오. 내가 중복

오류가 감소 x3.h에 x1.h 가져올 피하려는

나는 실행 상태를 얻었다 "문제 유형을 예상 구문 분석". 하지만 x3.m에서 x2.h로 #import를 복사 한 후 알 수없는 유형 및 구문 분석 문제로 100 개의 오류가 나타납니다. 예를 들어 임의의 클래스에서도. (y42.m)은 오류입니다. 이상한 것은 클래스 y42.m은 x3.h를 가져오고 x3를 모른다는 것입니다.

읽어 주셔서 감사합니다.

더 많은 정보 : x1.h 내용

@protocol aDelegate <NSObject> 

- (void)callback; 

@end 

x2.h 내용

#import "x1.h" 

typedef enum { 
    kOne, 
    kTwo, 
    kThree, 
}States; 

x3.h 내용

#import "x2.h" 

@interface x3 : NSObject <aDelegate> 
{ 
    States anyState; 
} 

@end 

상태를 알 수 및 aDelegate를 알 수 . 그 이유도 알려지지 않았습니다.

+0

솔직히 나는 정말로 이해하지 못합니다. 당신은 x1이라는 프로토콜 선언을 찾지 못했다고합니다.h는 "프로토콜을 가지고있다."그리고 x1.h를 x2.h에 포함시킴으로써 문제를 해결할 수 있다고 믿는다 (좋은 이유 때문에 피하기를 원한다). 하지만 프로토콜이 x1.h에 있다면, 왜 찾지 못하겠습니까? –

+2

컴파일러 오류 및 코드를 제공하여 사용자가 수행하는 작업을 정확하게 볼 수 있습니다. – nil

답변

0

오류에 대한 추가 정보가 필요하다고 생각하지만 비슷한 문제가 수정되어 프로토콜이 별도의 헤더 (프로토콜 만) (x4.h)로 선언되고 필요한 클래스로 가져와야합니다. 이 정보는 유일한 제안입니다.

0

당신은

@end 

와 X3 선언을 닫아야 그리고 당신의 열거는 미국하지 지정됩니다.

그렇지 않으면이 코드에 문제가 없습니다.

0

나는 동일한 오류 메시지와 함께 비슷한 문제가있었습니다. 짧은 대답 : 나는 순환 수입을했다.

따라서 솔루션은 LuisEspinoza가 제안한대로였습니다.

긴 대답 : 일반적으로 사용되는 .h 파일의 전체 묶음을 가져 오는 .h 파일 (a.h)이 있습니다. 또한 일반적으로 사용되는 수많은 열거 형을 정의합니다. a.h의 가져온 .h 파일 (b.h) ​​중 하나에서 해당 열거 형 중 하나가 필요했습니다. 생각없이, 나는 b.h 안에 "a.h"를 들여 썼다. XCode는 이것을 "Parse Issue Expected a type"의 수많은 인스턴스로보고했습니다. 열거 형을 c.h로 추출하여 a.h와 b.h에서 가져옵니다. 이것은 Luis가 제안한 것입니다.

그리고 배운 교훈은 XCode가 "Parse Issue Expected a type"을보고 할 때 원형 가져 오기를 고려해야한다는 것입니다.