Подтвердить что ты не робот

Объектив C - Тип кастинг от NSString до Int

У меня есть этот бит кода Objective C, где я накладываю NSString на int:

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

И NSLog выводит этот вывод:

b: 18396

Может кто-нибудь объяснить мне, почему это происходит?

Я был под типом показов, в результате чего строка в целое число получала числовое значение из строки.

4b9b3361

Ответ 1

У вас есть целочисленное значение указателя на объект NSString. Чтобы проанализировать строку на целое число, вы должны сделать:

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

Ответ 2

Чтобы использовать числовое значение:

int val = [stringObj intValue];

или для NSInteger:

NSInteger val = [stringObj integerValue];

Ответ 3

Когда вы бросаете объект в целое число, вы получите указатель на адрес памяти. Вы можете вызвать [a integerValue], чтобы получить целочисленное значение строки.

Также при кастинге лучше использовать NSInteger instate int. Потому что при использовании 64-разрядной операционной системы a NSInteger будет 64 бит.

Ответ 4

Или с синтаксисом литералов Objective-C:

@([a intValue]);