如何将一个NSInteger转换为一个int?
例如,当像这样将一个value
消息传递给一个NSInteger
实例时
[a value]
它会导致一个EXC_BAD_ACCESS。
那么如何将一个NSInteger
转换为int
?
如果相关的话,只使用小于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位系统构build一个整数。
#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位而不是32位编译时出现“错误”,简单的方法是不传递给一个新的variables就是使用这个技巧,add (int) :
[_monChiffre setUnite:(int)[_valUnites selectedSegmentIndex]];
代替 :
[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];