【发布时间】:2015-09-10 07:21:01
【问题描述】:
我有一个宏,很简单,但我不明白问题出在哪里?我得到了错误:
"预期的;在表达式之后"
这是一个宏定义:
#define SEGCONTROL (itemArray, segmentedControl) \
segmentedControl = [[SuperSegmentedControll alloc] initWithItems:itemArray]; \
segmentedControl.frame = CGRectMake(0, 0, 60, 28); \
segmentedControl.layer.cornerRadius = 05; \
[segmentedControl setTintColor:[UIColor colorWithRed:0.0/255.0 green:0.0/255.0 blue:102.0/255.0 alpha:1]]; \
segmentedControl.backgroundColor = [UIColor colorWithRed:19.0/255.0 green:62.0/255.0 blue:137.0/255.0 alpha:1]; [segmentedControl setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]} forState:UIControlStateNormal]; \
[segmentedControl setTitleTextAttributes: @{NSForegroundColorAttributeName:[UIColor whiteColor]} forState:UIControlStateSelected]; \
我打电话如下:
NSArray *itemArray = [NSArray arrayWithObjects: @"Save", nil];
SuperSegmentedControll *segmentedControl;
SEGCONTROL(itemArray, segmentedControl);
我想创建宏作为在许多地方使用的类似代码。为了保存,取消 ETC。
【问题讨论】:
-
为什么这么复杂?将这些东西放入方法或函数有什么问题?
-
宏是编译器的开销,复杂的宏也会导致内存消耗!
标签: ios objective-c macros