2010-07-23 4 views
30

내 프로젝트에 다중 타겟이 있습니다. 각 대상에는 자체 설정 파일 인 Class이 있습니다. 해당 Class 이름을 대상 설정 (Info.plist 또는 대상의 건물 설정)에 저장하고 싶습니다. 따라서이 설정에 따라 각 대상에서 사용할 클래스를 정의 할 수 있습니다.iphone : 코드로 Target 설정에서 User Defined 변수를 얻으시겠습니까?

this question에 따르면 각 대상의 건물 설정에 "대상 관련 User Defined"변수를 넣습니다.

하지만 내 코드로 다시 가져 오는 방법을 모르십니까?

+0

:

당신은 그때까지이 설정에 액세스 할 수 있습니까? 빌드 설정? Info.plist? 변수를 어디에서 설정 했습니까? – tonklon

+0

대상의 빌드 설정에 넣습니다. – KONG

답변

65

, 당신은이 방법을 사용할 수 있습니다 : 빌드 설정에서

은 사용자 정의 설정을 정의를 예 : CLASS_NAME 그리고 Info.plist 파일의 열쇠. CLASS_NAME 키의 이름을 지정하고 값을 ${CLASS_NAME}으로 설정하십시오. 무슨 뜻 설정 대상

NSString* className = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CLASS_NAME"]; 
9

빌드 설정에서 정의 된 변수를 직접 사용할 수 없습니다. 이 변수는 빌드 도구에서 사용하기위한 것입니다.

대신 'MYVAR = 5'와 같은 전 처리기 매크로 변수에 전 처리기 매크로를 정의하십시오. 이러한 매크로는 다음과 같이 코드에서 액세스 할 수 있습니다.

#if MYVAR==5 
    //Do something 
#endif 

이 표현식의 평가는 런타임이 아닌 빌드시 발생합니다.

값을 신경 쓰지 않고 매크로를 정의하는 것은 매우 일반적인 용도입니다. 예를 들어, 디버그 빌드 설정에서 'DEBUG = 1'을 정의하고 릴리스 빌드 설정에서 'RELEASE = 1'을 정의하십시오.

그런 다음 #ifdef를 사용하여 테스트 할 수 있습니다 또는의 Info.plist 파일이 너무 전처리로서 #ifndef

#ifdef DEBUG 
    // Log 
#endif 
+0

아, 알겠습니다. Info.plist는 어떻습니까? 거기에'Class' 이름을 저장하고 코드에서 가져올 수 있습니까? – KONG

+0

howto가 info.plist를 사용하는 또 다른 답변을 추가했습니다. – tonklon

+4

잘 이해한다면 빌드 설정 값을 직접 가져올 방법이 없습니까? 비밀 및 키 (구성마다 변경되는) 때문에 Plist를 통과하지 않는 것이 좋습니다. – Rivera