Por ejemplo, al pasar un valuemensaje a una NSIntegerinstancia como esta
[a value] provoca un EXC_BAD_ACCESS.
Entonces, ¿cómo convertir un NSIntegera int?
Si es relevante, solo se utilizan números pequeños <32.
Por ejemplo, al pasar un valuemensaje a una NSIntegerinstancia como esta
[a value] provoca un EXC_BAD_ACCESS.
Entonces, ¿cómo convertir un NSIntegera int?
Si es relevante, solo se utilizan números pequeños <32.
Respuestas:
Ta da:
NSInteger myInteger = 42;
int myInt = (int) myInteger;
NSIntegerno es más que un int de 32/64 bits. (usará el tamaño apropiado según el sistema operativo / plataforma que esté ejecutando)
Si desea hacer esto en línea, simplemente transmita NSUIntegero NSIntegera 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
NSIntegervalor en lugar de un int. En ningún caso es una solución multilínea.
No estoy seguro de las circunstancias en las que necesita convertir un NSIntegeren un int.
NSInteger es solo un typedef:
NSInteger Se utiliza para describir un número entero independientemente de si está compilando 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
Puede usar NSIntegercualquier lugar que use intsin convertirlo.
Usado comúnmente en UIsegmentedControl, aparece un "error" al compilar en 64 bits en lugar de 32 bits, una forma fácil de no pasarlo a una nueva variable es usar estos consejos, agregar (int) :
[_monChiffre setUnite:(int)[_valUnites selectedSegmentIndex]];
en vez de :
[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];