2012-08-17 4 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

2

NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit으로 NSDateComponents의 비트 마스크를 설정합니다.

기본적으로 모든 매개 변수를 사용하려고합니다. 한 변수에 여러 플래그를 제공하려는 경우 유용합니다.

1

NSCalendar은 꽤 비싼 클래스이며 일부 유닛의 계산에 많은 시간이 걸릴 수 있습니다. 따라서 이러한 플래그를 사용하면 더 빨리 단위를 계산할 단위를 지정할 수 있습니다. 지정되지 않은 단위는 계산되지 않습니다.

또한 NSCalendar을 사용하면 캐시하기 때문에 다시 만들면 비용이 많이 든다.

나머지는 @ wattson12에 의해 답변되었습니다.

+0

내가 찾던 답변은 @ wattson12에 의해 주어졌지만 당신의 의견을 고맙게 생각합니다! 꽤 많은 항목이있는 트리의 모든 파생물에서 각 요소에 대해 NSCalender를 구현하려고했습니다. 이것을 알면 매우 도움이됩니다. 고맙습니다! – nmdias