#define宏和xcode警告和缺少代码提示

时间:2011-09-20 11:53:21

标签: objective-c ios xcode macros categories

我写了一些小宏来帮助设置应用程序范围的字体样式,颜色和渐变。问题是当我使用宏中定义的颜色或字体时,xcode会抛出警告。有没有办法让xcode验证宏,并希望得到代码提示?

#define HEX_COLOR(colorname, hexcolor) \
\
@implementation UIColor(Style##colorname) \
\
+ (UIColor*) colorname \
{ \
    static UIColor * staticColor = nil; \
    if(! staticColor) { \
        float red   = ((hexcolor & 0xFF0000) >> 16)/255.0; \
        float green = ((hexcolor & 0xFF00) >> 8)/255.0; \
        float blue  = (hexcolor & 0xFF)/255.0; \
        float alpha = (hexcolor >> 24)/255.0; \
        \
        staticColor = [[UIColor colorWithRed:red \
                                       green:green \
                                        blue:blue \
                                       alpha:alpha] retain]; \
    } \
    return  staticColor; \
} \
@end

在我的app委托中,我设置了应用程序范围的字体和颜色,如下所示:

HEX_COLOR(specialGreenColor, 0x66BAD455);
.....

此行会抛出该属性可能不存在的警告。

[[UIColor specialGreenColor] set];

此外,我不想减少xcode中的错误报告,因为没有看到警告是向后的步骤。我只是想找到一种方法来使用xcode对marco进行反应。

2 个答案:

答案 0 :(得分:1)

如果要定义常量,则应使用#define,如下所示:

#define COLOUR_NAME 0x66BAD455

然后,预处理器将浏览您的文件并将所有COLOUR_NAME 逐字的实例替换为0x66BAD455

可以说better ways可以定义应用程序范围的常量。

编辑:还有this nice post,似乎可以更好地实现您的目标。您可以定义宏,然后使用上面链接的问题定义颜色常量。

答案 1 :(得分:0)

marco的代码提示在xCode 4.2中工作