2010-07-26 4 views
2

몇 가지 타겟이있는 프로젝트가 있습니다. 대부분의 수업에서는 .h 파일 하나를 사용하고 .m 파일의 세부 정보를 변경할 수 있습니다 (각 대상마다 다른 .m 파일 추가).여러 대상에서 다른 .h 파일을 사용하려면 어떻게해야합니까?

UIViewController 하위 클래스 중 하나에 대해 다른 대상에 대해 다른 UILabel IBOutlet을 선언해야합니다 (각 대상은 사용 가능한 대상에 따라 다른 레이블 집합을 보여줍니다). 문제는 헤더 파일을 대상으로 할 수 없다는 것입니다. 타겟 멤버십을 지정하기위한 체크 박스가 옆에 없습니다.

내가 다루는 방식은 모든 대상에 대해 콘센트를 추가하고 사용되지 않는 대상을 무시하는 것입니다. 그것은 이상적인 것처럼 보이지 않습니다.

헤더 빌드 단계를 사용해야합니까? 이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 감사.

편집 : 모든 .h 파일의 이름이 동일해야합니다. PlaceViewController.h.

+0

당신이 생각해 낸 해결책은 단지 광기로 이어질 것입니다. 앞으로 계획을 세우는 것과 같은 이름의 헤더를 여러 개 가져서는 안됩니다. 앞으로 빌드 오류와 유지 관리 문제가 발생할 가능성이 있습니다. 각 대상에 대해 고유 한 이름의 헤더를 사용하고 이미 응답에서 설명한대로 전 처리기 지시문을 기반으로 올바른 헤더를 포함하는 것이 좋습니다. 그러면 조금 더 오랫동안 정신을 차릴 수 있습니다. –

답변

3

.

#if TARGET_OS 
    #import "First/Target.h" 
#else 
    #import "Second/Target.h" 
#endif 

당신은 더 약 조건문here을 읽을 수 있습니다 : 헤더의 이름이 같은 경우

#if TARGET_OS 
    #import "FirstTarget.h" 
#else 
    #import "SecondTarget.h" 
#endif 
예를

를 들어 서로 다른 대상에 대해 다른 폴더를 사용할 수 있습니다. 미안 해요

+0

죄송합니다. 헤더에 동일한 이름을 사용하고 싶습니다. –

+0

@nevan 답변을 업데이트했습니다. – Shaji

1

헤더는 자체 컴파일되지 않지만 컴파일 된 다른 파일에 포함됩니다. 이러한 파일 내에서 조건부 컴파일을 사용하여 대상에 대한 올바른 헤더를 포함 할 수 있습니다. 각 대상에 대한 처리기 기호에 고유 한 기호를 정의하고 그에 따라 적절한 헤더를 포함 선택적 헤더 파일을 포함 당신은 처리기 지시문을 사용할 수 있습니다

#if defined(TARGET_ONE) 
#include "HeaderOne.h" 
#elif defined(TARGET_TWO) 
#include "HeaderTwo.h" 
#endif 
+0

죄송합니다. 모든 헤더에 동일한 이름이 있어야한다고 말했어야합니다. 위의 내 질문을 편집했습니다. –

+0

그럴 수있는 유일한 방법은 헤더를 하위 디렉토리에 놓은 다음 각 대상에 대한 검색 경로를 올바른 하위 디렉토리를 포함하도록 변경하는 것입니다. 그런 식으로 광기가 있습니다. 나는 당신이하고 싶은 일을하고 더 나은 방법을 찾아내는 것을 강력하게 권장하지 않습니다. 목표마다 고유 한 이름을 가진 별도의 파일을 작성하는 것이 좋습니다. –

0

너무 늦었 몇 년에 답이 될,하지만 나는 최근에 같은 문제가 있고,이 할 수있는 방법이있다 :

  • 의 이미 복제하여 새로운 대상을 생성한다고 가정 해 봅시다 원래 대상. Project Navigator에서 첫 번째 (원본) .h 파일을 마우스 오른쪽 버튼으로 클릭하고 Finder에서 파일을 엽니 다.
  • Xcode에서 파일을 마우스 오른쪽 버튼으로 클릭하고 프로젝트에서 제거합니다 (참조 만 제거하고 휴지통으로 이동하지 마십시오).
  • Finder에서 두 개의 폴더를 만듭니다 (동일한 폴더에 같은 이름의 파일 두 개를 만들 수 없음). 두 파일 모두 원래 파일 .h을 이동/복사하십시오.
  • 이제 프로젝트의 첫 번째 폴더를 드래그 앤 드롭하여 대상이있는 창이 튀어 나오면 첫 번째 대상 만 선택하십시오.
  • 두 번째 폴더와 동일하게 두 번째 대상 만 선택하십시오.

보라, 이제 두 개의 동일한 이름의 .h 파일을 가져야합니다.

주의 사항 : .h 파일에 NS_ENUM이 있으면 Xcode에서 임의의 문제가있는 것으로 보입니다. 아마 해결할 수 있지만, 아직 이해하지 못했습니다.

관련 문제