objective-c cocoa nsinteger

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)