Как преобразовать NSInteger в int?


например, при переходе value сообщение NSInteger например вот так

[a value] это вызывает EXC_BAD_ACCESS.

Итак, как преобразовать NSInteger to int?

если это актуально, используются только небольшие числа

4 86

4 ответа:

та да:

NSInteger myInteger = 42;
int myInt = (int) myInteger;

NSInteger это не более чем 32/64 бит int. (он будет использовать соответствующий размер в зависимости от того, какую ОС/платформу вы используете)

если вы хотите сделать это inline, просто закиньте NSUInteger или NSInteger до 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

Я не уверен в обстоятельствах, когда вам нужно преобразовать NSInteger до int.

NSInteger-это просто typedef:

NSInteger Используется для описания целого числа независимо от того, выполняется ли построение для 32-разрядной или 64-разрядной системы.

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64 
typedef long NSInteger;
#else
typedef int NSInteger;
#endif

можно использовать NSInteger любое место, где вы используете int без преобразования.

обычно используется в UIsegmentedControl," ошибка " появляется при компиляции в 64 бит вместо 32 бит, простой способ не передать его в новую переменную-использовать эти советы, добавить (int):

[_monChiffre setUnite:(int)[_valUnites selectedSegmentIndex]];

вместо :

[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];