10
NSInteger precedence = [self operatorPrecedence];
[d appendFormat:@"precedence:%d, ", precedence];

与える:

警告:フォーマットはタイプ'int'を指定していますが、引数のタイプは' NSInteger'(別名' long')です。

Xcodeはに変更%dすることを提案します%ld

ただし、次のように、32ビットまたは64ビットのターゲットに対してのみ機能しますNSInteger

 #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

32ビットと64ビットの両方のターゲットについて、警告を解除するための最良の方法は何ですか?

4

2 に答える 2

12

Appleの64ビット移行ガイドの指示に従ってください。

の場合は、値をNSInteger使用%ldしてにキャストしますlong

[d appendFormat:@"precedence:%ld, ", (long)precedence];
于 2013-01-23T04:34:58.723 に答える
-1

これを試して

UPD:

NSInteger precedence = [self operatorPrecedence];
[d appendFormat:@"precedence:%ld, ", (long)precedence];
于 2013-01-23T04:35:22.677 に答える