In genere questo tipo di definizione enum
indica che è un bit mask. Ogni membro dell'enumerazione ha un valore univoco, ma ha anche solo un bit impostato, il che significa che quando si combinano più valori, si è ancora in grado di determinare quali sono stati forniti solo osservando quali bit sono impostati.
Ad esempio, assumere tale intero a 32 bit rappresentato in binario:
0000 0000 0000 0000 0000 0001 0000 0000
Il bit 8 è impostato, che corrisponde al valore di enumerazione NSBinarySearchingFirstEqual
, poiché il valore 1 spostato di 8 bit verso sinistra finisce essendo l'8 bit (supponendo che si ordina i bit da 0)
0000 0000 0000 0000 0000 0101 0000 0000
Questo precedente intero a 32 bit dispone di 2 bit impostati, l'8 e il 10 °. Questi due bit corrispondono a NSBinarySearchingFirstEqual
e NSBinarySearchingInsertionIndex
.
Se non hai familiarità con lo spostamento dei bit, dai uno sguardo allo Wikipedia article che ha alcuni diagrammi utili.
La definizione del tipo indica che uno NSBinarySearchingOption
è di tipo NSUInteger
. Essenzialmente sono la stessa cosa, ma definendo un tipo diverso diventa più chiaro su quale tipo di valori fornire a un metodo che accetta un argomento di questo tipo.
"Se si specifica NSBinarySearchingFirstEqual e NSBinarySearchingLastEqual, viene generata una NSInvalidArgumentException" - dal documento SDK. –