Например, при передаче сообщения value экземпляру NSInteger, например,
[a value] он вызывает EXC_BAD_ACCESS.
Итак, как преобразовать NSInteger в int?
Если это относится только к маленьким числам < 32.
Ответ 1
Ta da:
NSInteger myInteger = 42;
int myInt = (int) myInteger;
NSInteger - это не более чем 32/64 бит int. (он будет использовать соответствующий размер в зависимости от того, какую ОС/платформу вы используете)
Ответ 2
Если вы хотите сделать это встроенным, просто введите 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
Ответ 3
Я не уверен в том, что вам нужно преобразовать 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, без его преобразования.
Ответ 4
Обычно используется в UIsegmentedControl, "ошибка" появляется при компиляции в 64 бит вместо 32 бит, простой способ не передавать ее новой переменной - использовать эти советы, добавить (int):