哪个更好?
static unsigned unitFlags;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit;
});
OR就像写
一样有效unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit;
或者是否有其他一些模式更有效?对于'unitFlags',定义会更好吗?
答案 0 :(得分:2)
你应该这样做:
static unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit;
如果右边的表达式不是有效的编译时常量,则只需要执行dispatch_once
技巧。但这是一个有效的编译时常量,所以你不必经过那么轻微的手。
但static
表达式通常优于#define
(它的类型,对于某些复杂的表达式,它可能更有效)。在我看来,坚持使用static
。