在iOS和OSX上使用unsigned int和unsigned long编译NSLog而不发出警告

时间:2013-01-16 01:05:46

标签: ios xcode macos

在iOS上NSUIntegerunsigned int,在OSX上是unsigned long。如何制作类似

的打印声明
 NSLog(@"Array has %d elements.",[array count]);

在没有警告的情况下在两个平台上编译?我当然可以使用#ifdef #else #endif构造,但这将添加4行代码。我也可以将返回值强制转换为unsigned int。有更短的解决方案吗?

2 个答案:

答案 0 :(得分:17)

如何投射到两者中的较大者?

NSLog(@"Array has %ld elements.",(unsigned long)[array count]);

在iOS中没有警告,我认为这是OSX中的无操作。

答案 1 :(得分:-1)

如何投射到两者中的较大者?

NSLog(@"Array has %ld elements.",(unsigned long)[array count]);
No warning in iOS, and I think it's a no-op in OSX.