4

iOS環境でNSIntegerを宣言することは、32ビット値のみになることを意味すると考えるのは正しいですか?

私はObjectiveCに精通していない別のプログラマーからint32を使用するように言われたので知りたいのですが、Objective Cで見つけることができる唯一の類似したものはint32_t、_tは「整数型」を表します。タイプは本当に苦痛になりつつあります。NSIntegerのようにObjectiveCから提供されるすべてのコントロールを機能的に持っていないように感じます。

どんな助けでも大歓迎です。

4

3 に答える 3

8

古いSDKの「」で「」がどのようNSIntegerに定義されているかを次に示します。NSObjCRuntime.h

#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

2013年9月の時点で、iPhoneは64ビットチップで実行できるようになりました。つまり、NSIntegerははるかに大きくなる可能性があります。

私自身のコーディングでは、純粋なObjective Cを実行している場合はNSInteger、将来にわたってコードを将来にわたって利用できるようにするため、これに固執します。一方、オープンソースのものや特定のプログラマーは、「uint32_t」や「int32_t」などの明示的なタイプを使用するのが好きなので、それらを見ると、私が行っているコードでそれらのスタイルを一致させようとします。 。

于 2012-08-09T03:24:55.190 に答える
0

typedefは、基本タイプからユーザーを保護するために存在します。そのため、移植性と呼ばれるrawタイプの代わりにtypedefを使用します。

于 2012-08-09T05:25:49.737 に答える
0

iOS 11のアップデート:NSIntegerは、ビルドされたアプリケーションとiOSのバージョンに応じて32ビットまたは64ビットになります。

32ビットアプリケーションを構築する場合、NSIntegerは32ビット整数です。64ビットアプリケーションは、NSIntegerを64ビット整数として扱います。

https://developer.apple.com/documentation/objectivec/nsinteger

于 2018-02-01T10:12:24.623 に答える