objective c - Cómo convertir un NSInteger a un int?
objective-c cocoa (4)
Comúnmente utilizado en UIsegmentedControl, aparece un "error" al compilar en 64bits en lugar de en 32bits, una manera fácil de no pasarlo a una nueva variable es usar estas sugerencias, add (int) :
[_monChiffre setUnite:(int)[_valUnites selectedSegmentIndex]];
en lugar de :
[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];
Por ejemplo, al pasar un mensaje de value
a una instancia de NSInteger
como tal
[a value]
causa un EXC_BAD_ACCESS.
Entonces, ¿cómo convertir un NSInteger
a int
?
Si es relevante, solo se utilizan números pequeños <32.
No estoy seguro de las circunstancias en las que debe convertir un NSInteger
a un int
.
NSInteger es solo un typedef:
NSInteger Se usa para describir un entero independientemente de si está construyendo para un sistema de 32 bits o de 64 bits.
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
#else
typedef int NSInteger;
#endif
Puedes usar NSInteger
cualquier lugar donde uses un int
sin convertirlo.
Si quieres hacer esto en línea, simplemente NSUInteger
o NSInteger
a un int
:
int i = -1;
NSUInteger row = 100;
i > row // true, since the signed int is implicitly converted to an unsigned int
i > (int)row // false
Ta da:
NSInteger myInteger = 42;
int myInt = (int) myInteger;
NSInteger
no es más que una int de 32/64 bit. (usará el tamaño apropiado según el sistema operativo / plataforma que esté ejecutando)