NSInteger precedence = [self operatorPrecedence];
[d appendFormat:@"precedence:%d, ", precedence];
дает:
Предупреждение: Формат указывает тип 'int', но аргумент имеет тип "NSInteger" (он же "длинный" )
и 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-битных целей?