2010-02-01 9 views
0

我想做一個條件語句在我的原型,如:

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

,因爲我使用多目標應用程序的自定義皮膚。

謝謝

回答

0

您可以獲取應用程序的名稱是這樣的:

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

謝謝但應用程序名稱始終爲零 – 2010-02-01 14:45:08

+1

然後,您應該將其設置在包中的plist中 – Mark 2010-02-01 14:52:43

+0

您可以使用CFBundleName或CFBundleExecutable而不是CFBundleDisplayName。使用CFBundleExecutable,您應該獲得與$ {EXECUTABLE_NAME}相同的值。 – mrueg 2010-02-01 17:59:57

3

您可以爲您的目標名稱設置預處理器宏。要做到這一點,只需打開目標信息面板,找到「預處理器宏」部分並輸入「MY_APP_NAME」。

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

然後在編譯的時候,你所要做的就是檢查如果存在的話。

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

然後在您的代碼中,您可以調用此函數來確定目標是否是您想要的目標。

+0

的最佳解決方案,但它不是實際的AppName的它有點混亂比I'dlike – 2010-02-01 14:45:37

+0

因爲你不能在運行時更改應用程序名稱,這個信息不需要在應用程序本身中,而應該在編譯時確定。這樣,儘管比1行解決方案更混亂,但會使每個目標的二進制文件變小,從本質上使您的應用程序在沒有條件的情況下更快一點。 – coneybeare 2010-02-01 14:58:08