2012-08-17 16 views
1

我似乎無法找到答案。這裏也沒有文件。也許我不確定我應該找什麼?請解釋在NSDateComponents中使用按位運算符OR?

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

從我的理解那些應該是合乎邏輯的位運算符的「OR」

他們如何在這種情況下工作嗎?像這樣使用

回答

2

位運算符是在一個可變設置多個布爾標誌的一種方式,被稱爲一個位掩碼

所以如果

FlagA = 1 << 3; //binary = 1000 
FlagB = 1 << 2; //binary = 0100 
FlagC = 1 << 1; //binary = 0010 
FlagD = 1 << 0; //binary = 0001 

和我設置

myFlag = FlagA | FlagC | FlagD; 

它是或

1000 | 
0010 | 
0001 = 
1011 

因此在您的示例中,您將單位標誌設置爲小時,分鐘,日期和月份

+0

謝謝!你完全清楚=) – nmdias 2012-08-17 08:18:37

2

您正在爲NSDateComponents設置位掩碼NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit

所以基本上你說你想使用所有的參數。如果你想在一個變量中給一個方法多個標誌,這很有用。

1

NSCalendar是非常昂貴的類和一些單位的計算可能需要很長時間。因此,通過這些標誌,您可以指定要計算哪些單位以使其更快。未指定的單位將不會被計算。

此外,當您使用NSCalendar時,緩存它,再次創建它真的很昂貴。

其餘由@ wattson12回答。

+0

我正在尋找的答案是由@ wattson12給出的,但我非常感謝你的輸入!我打算爲每棵樹的所有分支中的每個元素實現NSCalender,並且有相當多的條目。知道這一點很有幫助。謝謝! – nmdias 2012-08-17 08:23:12