Si desea hacer una matriz de números enteros, ¿puede usar NSInteger? ¿Tiene que usar NSNumber? Si es así, ¿por qué?
ios
objective-c
neuromante
fuente
fuente
Respuestas:
Puede usar una matriz C simple y antigua:
O puede usar una
NSArray
oNSMutableArray
, pero aquí deberá envolver cada entero dentro de unaNSNumber
instancia (porque losNSArray
objetos están diseñados para contener instancias de clases).fuente
NSArray
, estoy seguro de que no sentirás el impacto en el rendimiento.Matriz C:
Matriz Objective-C:
Matriz veloz:
Esto también es correcto:
NB: las matrices están fuertemente tipadas en Swift; en ese caso, el compilador infiere del contenido que la matriz es una matriz de enteros. También puede usar esta sintaxis de tipo explícito:
Si quisiera una matriz de dobles, usaría:
o:
fuente
Si desea utilizar un NSArray, necesita una clase Objective-C para colocarlo, de ahí el requisito NSNumber.
Dicho esto, Obj-C sigue siendo C, por lo que puede usar matrices C regulares y mantener entradas regulares en lugar de NSNumbers si es necesario.
fuente
Puede utilizar CFArray en lugar de NSArray. Aquí hay un artículo que explica cómo.
Lo mismo se aplica a la versión CoreFoundation de los otros contenedores también.
fuente
Creé una envoltura de Objective C simple alrededor de la vieja matriz C para usarla de manera más conveniente: https://gist.github.com/4705733
fuente
Si no se requiere el orden de sus números enteros y si solo hay valores únicos
también puede usar NSIndexSet o NSMutableIndexSet Podrá agregar y eliminar enteros fácilmente, o verificar si su matriz contiene un entero con
Consulte la documentación para obtener más información.
fuente
NSSet
(y usar enteros envueltos en unNSNumber
)?Creo que es mucho más fácil usar NSNumbers. Esto es todo lo que necesitas hacer:
fuente
for
o simplemente otra matriz para los números, y luegoarrayWithArray
.