2011-10-27 5 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. Qual è lo scopo di questa struttura?
  2. Che cosa significa la notazione :1 alla fine di ogni riga?
  3. Qual è il significato del modificatore unsigned quando non è presente un tipo esplicito?

GrazieQual è lo scopo della struttura delle bandiere in iOS?

+1

"unsigned" è implicito come un "unsigned int" se non diversamente specificato. –

risposta

5

Quelle sono bitfields. Poiché la maggior parte di questi sono flag, hanno solo 2 valori possibili, quindi non è necessario assegnare più di 1 bit a ciascun campo. (con un paio di eccezioni in quella struttura)

unsigned può stare da solo come tipo. È solo un unsigned int.