intにNSIntegerを変換する方法?
-
20-09-2019 - |
質問
例えばのでようvalue
インスタンスにNSInteger
メッセージを渡すとき
それはEXC_BAD_ACCESSを引き起こし[a value]
ます。
それでは、どのようNSInteger
がint
へ変換するのですか?
それは、関連するわずかな数のなら<32が使用されます。
解決
のTaダます:
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ビットシステム用に構築されているかどうかの整数を記述するために使用ます。
#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
使用することができます。
新しい変数に渡していないため代わりに、32ビットの64-ビット、簡単な方法でコンパイルするときに
一般UIsegmentedControlで使用される、「エラー」は(int型)のを追加し、このヒントを使用するようにされて表示されます。
[_monChiffre setUnite:(int)[_valUnites selectedSegmentIndex]];
の代わりに:
[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];
所属していません StackOverflow