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 に答える