NSLog中的unsigned int和unsigned long Xcode警告

时间:2016-08-05 12:55:08

标签: ios objective-c xcode nslog unsigned-integer

这比任何事都更令人烦恼。还有其他人遇到过这个吗?

出于调试目的,我将吐出_fetchedResults的计数。当我使用unsigned int时,Xcode会向我发出%u警告,然后提议将其更改为%lu

enter image description here

好的Xcode,当然,请继续前进。

然后它会立即再次发出警告并发出unsigned long警告,并提议将其返回 %lu更改为%u。循环重复。当然,我可以删除NSLog,但我在测试期间使用它。坦率地说,它比其他任何东西都更烦人。

enter image description here

其他人之前遇到过这种情况?不确定它有多重要,但是我在Xcode 7.3上的部署目标是9.0.x.

2 个答案:

答案 0 :(得分:3)

查看此SO主题: Compile NSLog with unsigned int and unsigned long

它说 -

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

还说 -

  

对于NSUInteger,最好的方法是NSLog(@"%lu", (unsigned long)array.count);
  和NSLog(@"%ld", (long)button.tag); for NSInteger:32位或64位都没有警告。

答案 1 :(得分:2)

 NSLog(@"row: %lu", (unsigned long)[_fetchedResultsController.fetchedObjects count]);

描述

  

32位平台上的32位无符号整数

     

64位平台上的64位无符号整数。

Type       Format Specifier    Cast
----       ----------------    ----
NSInteger    %ld               long
NSUInteger   %lu               unsigned long