タグ付けされた質問 「nsinteger」

8
NSIntegerとintを使用する場合
NSIntegeriOS用に開発する場合、vs.intをいつ使用する必要がありますか?関数に引数として値を渡したり、関数から値を返したりするときに使用するNSInteger(またはNSUInteger)Appleサンプルコードを確認しました。 - (NSInteger)someFunc;... - (void)someFuncWithInt:(NSInteger)value;... しかし、関数内ではint、値を追跡するために使用しています for (int i; i < something; i++) ... int something; something += somethingElseThatsAnInt; ... 私はNSInteger、64ビットまたは32ビット環境で整数を参照する安全な方法であると(言われました)読んだので、なぜ使用intするのですか?

5
NSInteger変数をフォーマット引数として使用すると、なぜlongにキャストする必要があるのですか?
NSInteger myInt = 1804809223; NSLog(@"%i", myInt); <==== 上記のコードはエラーを生成します: タイプ「NSInteger」の値は、フォーマット引数として使用しないでください。代わりに明示的なキャストを「long」に追加してください 訂正されたNSLogメッセージは実際にNSLog(@"%lg", (long) myInt);です。値を表示したいmyIntのに整数値をに変換する必要があるのはなぜlongですか?


3
NSIntegerのNSLog / printf指定子?
A NSIntegerは、32ビットプラットフォームでは32ビット、64ビットプラットフォームでは64ビットです。NSLog常にサイズに一致する指定子はありNSIntegerますか? セットアップ Xcode 3.2.5 llvm 1.6コンパイラ(これは重要です。gccはこれを行いません) GCC_WARN_TYPECHECK_CALLS_TO_PRINTF オン これは私にいくつかの悲しみを引き起こしています: #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { @autoreleasepool { NSInteger i = 0; NSLog(@"%d", i); } return 0; } 32ビットコードの場合、%d指定子が必要です。しかし、%d指定子を使用すると、64ビット用にコンパイルするときに警告が表示され、%ld代わりに使用するように提案されます。 %ld64ビットサイズと一致させるために使用する場合、32ビットコード用にコンパイルすると、%d代わりに使用することを示唆する警告が表示されます。 両方の警告を一度に修正するにはどうすればよいですか?どちらでも機能する指定子はありますか? これも影響[NSString stringWithFormat:]し[[NSString alloc] initWithFormat:]ます。

4
NSIntegerをintに変換する方法は?
たとえば、そのようなインスタンスにvalueメッセージを渡すときNSInteger [a value] EXC_BAD_ACCESSが発生します。 それでは、どのように変換するNSIntegerにはint? 関連する場合は、32未満の小さな数値のみが使用されます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.