例如,将value
消息传递给NSInteger
实例时,如此
[a value]
会导致EXC_BAD_ACCESS。
那么如何将NSInteger
转换为int
?
如果相关的只是小数字<使用了32个。
答案 0 :(得分:194)
Ta da:
NSInteger myInteger = 42;
int myInt = (int) myInteger;
NSInteger
只不过是32/64位int。 (它将根据您正在运行的操作系统/平台使用适当的大小)
答案 1 :(得分:28)
如果您想内联这样做,只需将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
答案 2 :(得分:18)
我不确定您需要将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
的任何地方使用{{1}}而不转换它。
答案 3 :(得分:0)
常用于UIsegmentedControl,"错误"在以64位而不是32位编译时出现,不将其传递给新变量的简单方法是使用此提示,添加(int):
[_monChiffre setUnite:(int)[_valUnites selectedSegmentIndex]];
而不是:
[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];