2010-02-01 3 views
0

내가 같은 내 프로토 타입에 조건문을 수행 할 $ {EXECUTABLE_NAME} 것처럼 응용 프로그램 변수에 대해 테스트 방법은 다음과 같습니다나는 그런

if (${EXECUTABLE_NAME} == "MyAppName") 

내가 응용 프로그램의 사용자 정의 스킨을위한 여러 대상을 사용하고로 .

감사

답변

0

당신은이 같은 응용 프로그램 이름을 얻을 수 있습니다 : 런타임에 응용 프로그램 이름을 변경할 수 없기 때문에,이 정보를

NSDictionary *info = [[NSBundle mainBundle] infoDictionary]; 
NSString *theAppName = [info objectForKey:@"CFBundleDisplayName"]; 
if([theAppName isEqualToString:@"MyAppName"]) { 
    //... 
} 
+0

고맙지 만 theAppName은 항상 NIL –

+1

입니다. 그런 다음 번들의 plist에 설정해야합니다. – Mark

+0

CFBundleDisplayName 대신 CFBundleName 또는 CFBundleExecutable을 사용할 수 있습니다. CFBundleExecutable을 사용하면 $ {EXECUTABLE_NAME}과 같은 값을 가져야합니다. – mrueg

3

당신은 당신의 목표 이름에 대한 전처리 매크로를 설정할 수 있습니다. 이렇게하려면 타겟 정보 패널을 열고 "프리 프로세서 매크로"섹션을 찾고 "MY_APP_NAME"을 입력하십시오.

alt text http://grab.by/26Z5

그런 다음 컴파일시에, 당신이해야 할 모든이가 존재하는지 확인합니다.

-(BOOL) isMyAppName { 
    #ifdef MY_APP_NAME 
     return YES; 
    #else 
     return NO; 
    #endif 
} 

코드에서 나중에이 함수를 호출하여 원하는 대상인지 확인할 수 있습니다.

+0

훌륭한 솔루션하지만 I'dlike –

+0

이상이 아니 실제 프로그램 응용의 약간 지저분 앱 자체에있을 필요는 없지만 컴파일 할 때 결정해야합니다. 이렇게하면 1 라인 솔루션보다 난해하지만 각 타겟별로 바이너리를 작게 만들 수 있으며 조건부없이 앱을 조금 더 빠르게 만들 수 있습니다. – coneybeare

관련 문제