iphone - 条件编译和 Objective-C/Xcode

标签 iphone objective-c xcode ipad

所以我正在开展一个学习项目,我正在尝试创建一个包含 URL 存储的头文件,以便您只需更改一个标志即可从调试更改为生产。这就是我试图用编译器做的事情,这显然是错误的。我找不到任何有关如何在 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

现在我不确定是否需要将其声明为属性(property)。另外,一旦正确编译了它,如何从外部类访问它(当然在您 #import globalURL 的类之后)任何关于正确方法的指导将不胜感激.

最佳答案

Geoff:我的 Mac App Store 应用程序需要这种条件来验证收据,我使用单独的构建配置和 -D 标志来完成此操作。在调试配置中,添加一个编译器标志,例如 -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 或 ivar 声明。- 刚刚看到你已经把它们拿出来了。

关于iphone - 条件编译和 Objective-C/Xcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4441397/

相关文章:

iphone - 通过应用内购买将 iPhone 应用提交到 App Store

iphone - 使用 Storyboard在两个 Controller 之间传递数据

ios - Xcode 7.0.1 (7A1001) 调试器 "Unable to read data"

iOS - 使用基于字典的 UITableView 进行分页

objective-c - 在 NSOutlineView 中托管 NSView 的图层

iOS 通用链接无法打开应用程序

ios - 将IAP存储在UserDefaults中,这样用户无需每次按“可购买”按钮即可恢复购买

ios - 图像在循环动画中移动 - Swift

iphone - 如何更改uinavigationbar背景颜色而不覆盖drawRect :

iphone - 跟踪 UIScrollView 时,带有 NSRunLoopCommonModes 的 CADisplayLink 不会在每一帧执行?