99

例如,当将value消息传递给这样的NSInteger实例时

[a value]它会导致 EXC_BAD_ACCESS。

那么如何转换NSIntegerint

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

4

4 回答 4

210

达达:

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

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

于 2009-11-17T23:54:15.990 回答
28

如果您想内联执行此操作,只需将NSUIntegerorNSInteger转换为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
于 2012-01-03T23:23:43.013 回答
18

我不确定您需要将 a 转换NSIntegerint.

NSInteger 只是一个类型定义:

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而不用转换它。

于 2009-11-18T02:38:09.283 回答
0

常用于 UIsegmentedControl,在 64 位而不是 32 位编译时出现“错误”,不将其传递给新变量的简单方法是使用此提示,添加(int)

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

代替 :

[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];
于 2014-05-12T19:42:10.230 回答