例如当通过一个 value 发消息给 NSInteger 像这样的实例

[a value] 它会导致 EXC_BAD_ACCESS。

那么如何转换 NSIntegerint?

如果相关,则仅使用 < 32 的小数字。

有帮助吗?

解决方案

达达:

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

NSInteger 无非是一个 32/64 位 int。(它将根据您运行的操作系统/平台使用适当的大小)

其他提示

如果你想内联执行此操作,只需投射 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 位编译时出现“错误”,不将其传递给新变量的简单方法是使用此提示,添加 (整数):

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

代替 :

[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top