如何将一个NSInteger转换为一个int?

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

[a value]它会导致一个EXC_BAD_ACCESS。

那么如何将一个NSInteger转换为int

如果相关的话,只使用小于32的数字。

达达:

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

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

如果你想这样做内联,只需将NSUIntegerNSInteger转换为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]];