NSIntegerとintの使い分け方 質問する

NSIntegerとintの使い分け方 質問する

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の代わりにを使用することをお勧めします。intlong

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

これらの各型に使用する正しい書式指定子については、文字列プログラミングガイドのプラットフォーム依存性に関するセクション

おすすめ記事