2011-09-20 62 views
0

我寫了一些小的宏來幫助設置應用程序範圍的字體樣式,顏色和漸變。問題是,當我使用宏中定義的顏色或字體時,xcode會拋出警告。有沒有辦法讓xcode驗證宏,並希望獲得代碼暗示?#define宏和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 

在我的應用程序委託我設置應用程序範圍的字體和顏色是這樣的:

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

此行拋出的財產可能不存在的警告。

[[UIColor specialGreenColor] set]; 

此外,我不想減少xcode中的錯誤報告,因爲看不到警告是向後的步驟。我只想找到一種方法來註冊xcode的marco。

回答

0

代碼提示爲marco工程xcode 4.2

1

如果要定義常量,你應該使用#define像這樣:

#define COLOUR_NAME 0x66BAD455 

然後,預處理器將通過您的文件,並替換0x66BAD455COLOUR_NAME逐字所有實例。

儘管如此,可以說better ways來定義應用程序範圍內的常量。

編輯:還有this nice post這似乎提供了一個更好的實現你要去的東西。您可以定義宏,然後使用上面鏈接的問題定義顏色常量。