Как преобразовать NSInteger в int?
например, при переходе value
сообщение NSInteger
например вот так
[a value]
это вызывает EXC_BAD_ACCESS.
Итак, как преобразовать NSInteger
to int
?
если это актуально, используются только небольшие числа
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]];