99

たとえば、そのようなインスタンスにvalueメッセージを渡す場合NSInteger

[a value]EXC_BAD_ACCESSが発生します。

では、をに変換する方法NSIntegerint

関連する場合は、32未満の少数のみが使用されます。

4

4 に答える 4

210

タダ:

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

NSInteger32/64ビット整数にすぎません。(実行しているOS /プラットフォームに基づいて適切なサイズを使用します)

于 2009-11-17T23:54:15.990 に答える
28

これをインラインで実行する場合は、NSUIntegerまたはNSIntegerint:にキャストするだけです。

int i = -1;
NSUInteger row = 100;
i > row // true, since the signed int is implicitly converted to an unsigned int
i > (int)row // false
于 2012-01-03T23:23:43.013 に答える
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

于 2009-11-18T02:38:09.283 に答える
0

UIsegmentedControlで一般的に使用される「エラー」は、32ビットではなく64ビットでコンパイルすると表示されます。新しい変数に渡さない簡単な方法は、このヒントを使用して(int)を追加することです。

[_monChiffre setUnite:(int)[_valUnites selectedSegmentIndex]];

それ以外の :

[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];
于 2014-05-12T19:42:10.230 に答える