1

哪个更好?

static unsigned unitFlags;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
    unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit;
});

或者这和写作一样有效吗

unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit;

还是有其他一些更有效的模式?'unitFlags' 的定义会更好吗?

4

1 回答 1

2

你应该这样做:

static unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit;

dispatch_once如果右边的表达式不是有效的编译时常量,您只需要这样做。但这是一个有效的编译时常量,因此您不必费力。

但是static表达式一般比a好#define(它是有类型的,对于一些复杂的表达式,它可以更有效)。static在我看来,坚持下去。

于 2013-01-22T13:42:27.803 回答