Por lo general, ese tipo de enum
definición indica que es un bit mask. Cada miembro de la enumeración tiene un valor único, pero también solo tiene un bit establecido, lo que significa que cuando combina valores múltiples, aún puede determinar cuáles se proporcionaron simplemente observando qué bits se establecen.
Por ejemplo, asumir esta entero de 32 bits representado en binario:
0000 0000 0000 0000 0000 0001 0000 0000
El octavo bit se fija, que corresponde al valor enum NSBinarySearchingFirstEqual
, ya que el valor 1 desplaza 8 bits a la izquierda termina siendo el octavo bit (suponiendo que pide sus bits de 0)
0000 0000 0000 0000 0000 0101 0000 0000
Este anterior entero de 32 bits tiene 2 bits que están activos, la octava y la décima. Estos dos bits corresponden a NSBinarySearchingFirstEqual
y NSBinarySearchingInsertionIndex
.
Si no está familiarizado con el cambio de bit, eche un vistazo a Wikipedia article que tiene algunos diagramas útiles.
La definición de tipo significa que un NSBinarySearchingOption
es del tipo NSUInteger
. Básicamente, son la misma cosa, pero al definir un tipo diferente, se vuelve más claro sobre qué tipo de valores proporcionar a un método que toma un argumento de este tipo.
"Si especifica tanto NSBinarySearchingFirstEqual como NSBinarySearchingLastEqual, arroja una NSInvalidArgumentException" - del documento SDK. –