2013-07-29 48 views
1

我用這個宏:如何創建宏[UIFont fontWithName:size:]?

#define fontMacro(name, size) ((UIFont *)[UIFont fontWithName:(NSString *)(name) size:(CGFloat)(size)]) 

UIFont *font = fontMacro(@"Akrol", 15); // Error: Expected ']' 
UIFont *font2 = ((UIFont *)[UIFont fontWithName:(NSString *)(@"Akrol") size:(CGFloat)(15)]); // work fine 

所以,我怎麼能使用fontMacro

+1

的[定義宏UIFont不工作(可能的複製http://stackoverflow.com/questions/17339461/def INE宏換uifont-犯規工作) – Leena

回答

2

的問題是,您的宏的size參數在所有出現在右手邊「大小」的擴大,使fontMacro(@"Akrol", 15)擴展到

((UIFont *)[UIFont fontWithName:(NSString *)(@"Akrol") 15:(CGFloat)(15)]) 
          unwanted expansion here ---^ 

重命名宏參數_size_或類似 應該解決的問題:

#define fontMacro(_name_, _size_) ((UIFont *)[UIFont fontWithName:(NSString *)(_name_) size:(CGFloat)(_size_)])