NSInteger precedence = [self operatorPrecedence];
[d appendFormat:@"precedence:%d, ", precedence];
给出:
Warning: Format specifies type 'int' but the argument has type 'NSInteger' (aka '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 位目标,消除警告的最佳方法是什么?
最佳答案
关注the instructions in Apple's 64-Bit Transition Guide .
对于 NSInteger
,使用 %ld
并将值转换为 long
。
[d appendFormat:@"precedence:%ld, ", (long)precedence];
关于ios - 32 位和 64 位的 %d 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14472424/