Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 条件编译与Objective-C/Xcode_Iphone_Objective C_Xcode_Ipad - Fatal编程技术网

Iphone 条件编译与Objective-C/Xcode

Iphone 条件编译与Objective-C/Xcode,iphone,objective-c,xcode,ipad,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 Gl

因此,我正在进行一个学习项目,并试图创建一个包含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

现在我不确定是否需要将其声明为财产。此外,一旦正确编译,我将如何从外部类访问它(当然是在您导入globalURL的类之后),非常感谢您提供有关正确方法的任何指导。

我认为这应该有效

#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

杰夫:我需要在我的Mac App Store应用程序中使用这种条件验证收据,我使用单独的构建配置和
-D
标志来实现。在调试配置中,添加一个类似于
-DDEBUG\u BUILD
的编译器标志(注意开头的双D,没有空格),然后使用

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

这样,您就不必记得每次为生产构建时都交换
#define
。(你最终会忘记。每个人都会忘记。)-如果你这样做,那么你也不需要
@属性或ivar声明。-刚才看到你已经取出了这些。你想在程序运行时更改它吗?您当前使用的是静态值,但有一个带有setter的@property。更正,我删除了属性值和声明。它似乎做了我需要的,只是需要验证这是正确的方法?我想你现在有了。基本上和我在下面指出的一样。你想避免重复声明。是的,解决了这个问题。感谢您的回复。:)现在我不用.m文件就可以工作了。这样做是标准做法吗?或者我的方式还可以。(参见上面的答案)我通常这样做(在init中设置值),但这并不意味着它是正确的。我喜欢这个方法,因为我仍然可以将变量作为一个可访问的属性。好吧,我的方法只需要是静态的,我不需要将它作为属性访问。有用的信息。感谢您的回复这就是我现在正在做的事情,一旦我验证是否可以将所有内容都包含在.h文件中,我会将其标记为答案…最后一个问题,我可以不使用我在多个类中创建的变量吗?当我尝试使用它时,它会显示“重复变量”。这是一个问题,还是其他问题?杰夫,我应该提到,我通常将这些常量放在appnamesconstants.h文件中,然后将其添加到项目的.pch文件中,以便在任何地方都可用。这可能适用于您的URL,也可能不适用于您的URL,但这只是另一个提示。