たとえば、value
メッセージをNSInteger
インスタンスに渡す場合
[a value]
EXC_BAD_ACCESSが発生します。
NSInteger
をint
に変換する方法は?
関連する場合は、32未満の小さな数字のみが使用されます。
タダ:
NSInteger myInteger = 42;
int myInt = (int) myInteger;
NSInteger
は32/64ビット整数にすぎません。 (実行しているOS /プラットフォームに基づいて適切なサイズを使用します)
このインラインを実行する場合は、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ビットシステムのどちらで構築するかに関係なく、整数を記述するために使用します。
#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
を変換せずに使用できます。
UIsegmentedControlで一般的に使用され、32ビットではなく64ビットでコンパイルすると「エラー」が表示されます。新しい変数に渡さないための簡単な方法は、このヒントを使用して(int)を追加することです
[_monChiffre setUnite:(int)[_valUnites selectedSegmentIndex]];
の代わりに :
[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];