iOS 向けに開発する場合、 vs. intはいつ使用すればよいですかNSInteger
? Apple のサンプル コードでは、関数に引数として値を渡したり、関数から値を返すときにNSInteger
(またはNSUInteger
) が使用されていることがわかります。
- (NSInteger)someFunc;...
- (void)someFuncWithInt:(NSInteger)value;...
しかし関数内ではint
値を追跡するだけなので
for (int i; i < something; i++)
...
int something;
something += somethingElseThatsAnInt;
...
NSInteger
これは64 ビット環境でも 32 ビット環境でも整数を参照する安全な方法だと読んだことがあります (聞いたことがあります) 。では、なぜこれを使用するのint
でしょうか?
ベストアンサー1
通常、 を使用するのNSInteger
は、コードがどのようなプロセッサ アーキテクチャで実行されるかわからない場合です。そのため、何らかの理由で可能な限り最大の整数型が必要な場合があります。これは、32 ビット システムでは ですint
が、64 ビット システムでは ですlong
。
特に必要でない限り、/NSInteger
の代わりにを使用することをお勧めします。int
long
NSInteger
/ はこれらの型のいずれかにNSUInteger
*dynamic * として定義されtypedef
、次のように定義されます。
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif
これらの各型に使用する正しい書式指定子については、文字列プログラミングガイドのプラットフォーム依存性に関するセクション