簡體   English   中英

條件編譯和Objective-C / Xcode

[英]Conditional Compilation and Objective-C/Xcode

所以我正在研究一個學習項目,我正在嘗試創建一個包含URL存儲的頭文件,這樣你就可以只更改一個標志,從Debug更改為Production。 這就是我試圖用編譯器做的事情,這顯然是錯誤的。 我找不到有關如何在Objective-C中執行此操作的任何信息,這就是我來到這里的原因。

#define DEBUG 1
#if DEBUG
  NSString *URL = @"dev.myserver.com";
#else
  NSString *URL = @"myserver.com";
#endif

@interface GlobalURLRefrences : NSObject {
  //NSString *URL; removed this
}

//@property (nonatomic, retain) NSString *URL; removed this

@end

現在我不確定是否需要將其聲明為屬性。 此外,一旦正確編譯,如何從外部類訪問它(當然在#import globalURL的類之后)任何關於正確方法的指導將非常感激。

Geoff:我需要在我的Mac App Store應用程序中使用這種條件來驗證收據,我使用單獨的構建配置和-D標志來完成。 在Debug配置中,添加一個類似-DDEBUG_BUILD的編譯器標志(注意開頭的雙D而沒有空格。)然后使用

#ifdef DEBUG_BUILD
    #define SERVER_URL_STRING @"http://dev.myserver.com"
#else
    #define SERVER_URL_STRING @"http://myserver.com"
#endif

這樣,您每次構建生產時都不必記住交換#define (你最終會忘記的。每個人都有。) -如果你做這種方式,那么你就不需要@property或either.-剛剛看到你把這些已經出來了伊娃聲明。

我認為這應該有效

#define DEBUG 1
#if DEBUG
   #define URL = @"dev.myserver.com";
#else
   #define URL = @"myserver.com";
#endif

我想你試圖兩次定義相同的變量。 這個怎么樣:

在你的標題中:

#define DEBUG 1

在.m文件的init中:

#if DEBUG
   URL = @"dev.myserver.com";
#else
   URL = @"myserver.com";
#endif

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM