2011-10-27 2 views
5
struct 
{ 
    unsigned resizesCellWidths:1; 
    unsigned numColumns:6; 
    unsigned separatorStyle:3; 
    unsigned allowsSelection:1; 
    unsigned backgroundViewExtendsUp:1; 
    unsigned backgroundViewExtendsDown:1; 
    unsigned usesPagedHorizontalScrolling:1; 
    unsigned updating:1; 
    unsigned ignoreTouchSelect:1; 
    unsigned needsReload:1; 
    unsigned allCellsNeedLayout:1; 
    unsigned isRotating:1; 
    unsigned clipsContentWidthToBounds:1; 
    unsigned isAnimatingUpdates:1; 
    unsigned requiresSelection:1; 
    unsigned contentSizeFillsBounds:1; 
    unsigned delegateWillDisplayCell:1; 
    unsigned delegateWillSelectItem:1; 
    unsigned delegateWillSelectItemMultiTouch:1; 
    unsigned delegateWillDeselectItem:1; 
    unsigned delegateDidSelectItem:1; 
    unsigned delegateDidSelectItemMultiTouch:1; 
    unsigned delegateDidDeselectItem:1; 
    unsigned delegateGestureRecognizerActivated:1; 
    unsigned delegateAdjustGridCellFrame:1; 
    unsigned delegateDidEndUpdateAnimation:1; 
    unsigned dataSourceGridCellSize:1; 
    unsigned int isEditing:1; 
    unsigned __RESERVED__:1; 
} _flags; 
  1. 이 구조체의 목적은 무엇입니까?
  2. 각 줄 끝의 :1 표기법은 무엇을 의미합니까?
  3. 명시 적 유형이없는 경우 unsigned 수정 자의 의미는 무엇입니까?

감사iOS에서 플래그 구조체의 목적은 무엇입니까?

+1

달리 지정되지 않는 한'unsigned'는'unsigned int'로 암시됩니다. –

답변

5

사람들은 bitfields이다. 대부분이 플래그이기 때문에 가능한 값은 2 개뿐이므로 각 필드에 1 비트 이상을 지정할 필요가 없습니다. (해당 구조체의 몇 가지 예외가 있음)

unsigned은 유형으로 단독으로 서있을 수 있습니다. 단지 unsigned int입니다.

관련 문제