프로그래밍/아이폰,아이패드

혼자 버그라고 오해한 XCode 4.2의 컴파일 에러

panpro 2011. 10. 19. 17:56

오늘 그렇잖아도 시간도 별로 없었는데, 짬날때마다 이것 때문에 삽질 좀 했슴미다.

너무나도 단순한 문제인데 컴파일이 안되어 이거이  XCode 4.2의 버그라고 생각했는데, 역시나 제 잘못이었슴미다.

 

진짜 간단한, Apple에서 제공한 tutorial을 따라하는 중이었는데,

 

#import <Cocoa/Cocoa.h>

 

@interface HelloView : NSView

{

NSString * m_pstrText; // 여기서 보여줄 문자열

}

 

-(void) test;

 

@end

 

위와 같은 클래스를 정의해 놓고, 외부에서 test() 메소드를 호출하겠다고만 하면

 

"AutoreleasePool count reference issue" 라고 시작하는, 암튼 저런 함수가 없다 라는 말도 안되는 컴파일 에러 메시지가 나온다.

 

clean을 아무리 하고 껐다켰다를 반복해도 마찬가지였다.

그래서 이름만 다르게 하고 똑같은 기능을 하는 새로운 클래스를 만들어서 테스트해보니

당연히 잘 된다. 잘 되야 하니까.

 

도대체 왜 안될까를 고민면서 잘되는 파일과 잘 안되는 파일의 속성을 비교해 보았다.

 

이런 저런 속성들을 찾아보다 드뎌 그 문제를 확인했다.

 

XcodeLocation

 

처음 봤을 때, 다른 점은 파란색으로 표시한 "Relative to Project" 부분이었다.

 

Location의 위치가 다른 파일들은 모두 "Relative to Group" 이었는데, 문제가 되는 그 클래스의 파일 2개만 "Relative To Project"였다.

그래서 그 클래스를 위한 2개의 파일을 그냥 다른 조치없이 Location을 "Relative to Group"으로만 바꿔줘 봤다.

 

그래도 여전히 마찬가지로 똑같은 에러가 났다.

 

또 뭐가 문젠가 봤더니 다른 파일들은 모두 다 같은 폴더 안에 있는데, 그 2개의 파일만 다른 위치에 있었다.

그래서 모두 같은 폴더 안에 들어가도록 맞춰줬다.

 

다행히도 XCode는 파일을 우클릭하면 Finder에서 보여주는 기능을 제공한다.

그래서 쉽게 파일의 위치를 조정할 수 있었고, 위 그림에서 빨간색 버튼을 클릭하면 해당 파일의 위치를 다시 잡아줄 수 있다.

 

이런 식으로 파일 위치를 잡아줬더니 문제가 모두 해결되었다.

아마도 XCode에 캐시가 있었던 게 아닌가 싶다.

그래도 Clean을 했는데도 계속 캐시를 쓰면서 에러가 발생한 건 큰 문제다.

 

이렇게 해 놓으니 다시 원래의 상태로 돌려놔도 컴파일 에러가 발생하지 않는다.

 

도대체 왜 이러는지 많이 궁금했는데, 이제 원인도 파악하고 문제도 해결되어 넘 개운하다. 하하.

이 맛에 파고드는거지 모.

 

 

이 글이 도움이 되셨다면 아래 손꼬락을 꼬옥 눌러주세요. 큰 힘이 됩니다. 그리고 댓글도 남겨주시면 더더욱 크~ㄴ 힘이 되겠습니다. ^^;