objective-c casting

objective c - Objetivo C-Tipo Casting desde NSString a Int



objective-c (4)

Cuando convierte un objeto en un entero, obtendrá el puntero a la dirección de la memoria. Puede llamar a [a integerValue] valor entero [a integerValue] para obtener el valor entero de la cadena.

Además, cuando se emite, es mejor usar NSInteger instate of int . Porque cuando se usa un sistema operativo de 64 bits, un NSInteger será de 64 bits.

Tengo este código de Objective C, donde estoy lanzando un NSString a un int :

NSString *a=@"123abc"; NSInteger b=(int) a; NSLog(@"b: %d",b);

Y el NSLog produce esta salida:

b: 18396

¿Alguien puede explicarme por qué esto está sucediendo?

Estaba bajo el tipo de impresión al convertir una cadena en un entero obtendría el valor numérico de la cadena.


O con la sintaxis de Objective-C literals:

@([a intValue]);


Para obtener el valor numérico use:

int val = [stringObj intValue];

o para NSInteger :

NSInteger val = [stringObj integerValue];


Tienes un valor entero de puntero al objeto NSString allí. Para analizar la cadena a un entero debes hacer:

NSString *a = @"123abc"; NSInteger b = [a integerValue];