例如,当将一个值消息传递给一个 NSInteger 实例时,像这样 [a value] 会导致 EXC_BAD_ACCESS 错误。
那么如何将 NSInteger 转换为 int?
如果只涉及到小于 32 的小数,那么如何处理?
那么如何将 NSInteger 转换为 int?
如果只涉及到小于 32 的小数,那么如何处理?
瞧,完成了:
NSInteger myInteger = 42;
int myInt = (int) myInteger;
NSInteger
本质上就是一个32/64位的整数(它将根据您运行的操作系统/平台使用相应的大小)。
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
int
的位置使用NSInteger
值,就会发生隐式转换。在这两种情况下都不是多行解决方案。 - Lily Ballard我不确定在何种情况下需要将NSInteger
转换为int
。
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
您可以在不进行转换的情况下,在任何使用int
的地方使用NSInteger
。
在UIsegmentedControl中常用的方法,在64位编译时出现“错误”,不需要将其传递到新变量的简单方法是使用此提示,添加(int):
[_monChiffre setUnite:(int)[_valUnites selectedSegmentIndex]];
而不是:
[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];