Zazwyczaj ten rodzaj definicji enum
wskazuje, że jest to bit mask. Każdy element wyliczenia ma unikalną wartość, ale ma tylko jeden zestaw bitów, co oznacza, że po połączeniu wielu wartości nadal można określić, które z nich zostały dostarczone, po prostu patrząc, które bity są ustawione.
Na przykład załóżmy, że to 32-bitową liczbę całkowitą przedstawioną w Binary
0000 0000 0000 0000 0000 0001 0000 0000
8th bit jest ustawiony, co odpowiada wartości wyliczeniowego NSBinarySearchingFirstEqual
, ponieważ wartość 1 przesunięty 8 bitów w lewo kończy będąc 8. bit (zakładając, że zamówić bity od 0)
0000 0000 0000 0000 0000 0101 0000 0000
Ta poprzednia wersja 32-bitowa liczba całkowita ma 2 bity, które są ustawione, 8. i 10.. Te dwa bity odpowiadają NSBinarySearchingFirstEqual
i NSBinarySearchingInsertionIndex
.
Jeśli nie masz doświadczenia z przeniesieniem bitów, przejrzyj Wikipedia article, który zawiera przydatne diagramy.
Definicja typu oznacza, że NSBinarySearchingOption
jest typu NSUInteger
. Zasadniczo są one tym samym, ale definiując inny typ, staje się jaśniejsze, jaki rodzaj wartości należy podać dla metody, która przyjmuje argument tego typu.
"Jeśli podasz NSBinarySearchingFirstEqual i NSBinarySearchingLastEqual, zgłasza wyjątek NSInvalidArgumentException" - z dokumentu SDK. –