在objective-c中定义常量

时间:2014-06-02 04:00:29

标签: objective-c

我对Objective C很新,我想根据另一个常量的值定义一些常量。

#define MODE_DEV YES
#if (MODE_DEV)
    #define WEBSERVICE_URL @"http://dev.testurl.com";
#else
    #define WEBSERVICE_URL @"http://prod.testurl.com";
#endif

我正在使用WEBSERVICE_URL

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@add_device_token", WEBSERVICE_URL]];

但我在上面的行中遇到错误。

错误上写着"Expected ]"

我不知道我的代码有什么问题。

4 个答案:

答案 0 :(得分:7)

问题是#define行末尾的分号。

请记住,#define只是文字替代。所以你说:

#define WEBSERVICE_URL @"http://dev.testurl.com";

因此分号是文本替换的一部分,并在上下文中给出了无意义:

NSURL *url = 
    [NSURL URLWithString:
        [NSString stringWithFormat:
            @"%@add_device_token", @"http://dev.testurl.com";]];
                                                            ^

答案 1 :(得分:1)

你应该记住的关键#define只是替换文字(永远记住它)

EXP:

#define something bySomethingElse...!@#$%^&*

使用something的地方,xcode会将其替换为bySomethingElse...!@#$%^&*

您应该删除";"

祝你好运

答案 2 :(得分:0)

这里不需要分号分隔符。

#define MODE_DEV YES

#if (MODE_DEV)
#define WEBSERVICE_URL @"http://dev.testurl.com"
#else
#define WEBSERVICE_URL @"http://prod.testurl.com"
#endif

答案 3 :(得分:0)

它是如何完成的:

#define MODE_DEV YES
#if (MODE_DEV)
    #define WEBSERVICE_URL @"http://dev.testurl.com"
#else
    #define WEBSERVICE_URL @"http://prod.testurl.com"
#endif

NSURL *url = [NSURL URLWithString:WEBSERVICE_URL "/add_device_token"];