NSLogs 中的 unsigned int 和 unsigned long Xcode 警告

unsigned int and unsigned long Xcode warnings in NSLogs

这比什么都烦人。还有其他人 运行 穿过这个吗?

出于调试目的,我吐出 _fetchedResults 的计数。 Xcode 在我使用 %u 时给我一个 unsigned int 警告,然后提出将其更改为 %lu

好的Xcode,好的,请继续。

然后它立即再次对我狂吠并发出 unsigned long 警告并提议将其 返回 %lu 更改为 %u。并且循环重复。当然,我可以只删除NSLog,但我在测试期间使用它。坦率地说,这比什么都烦人。

其他人 运行 之前有过这个问题吗?不确定它有多重要,但我使用的是 Xcode 7.3,部署目标是 9.0.x。

查看此 SO 线程: Compile NSLog with unsigned int and unsigned long

它说-

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

而且还说-

The best way is NSLog(@"%lu", (unsigned long)array.count); for NSUInteger,
and NSLog(@"%ld", (long)button.tag); for NSInteger: no warnings in either 32 bit or 64 bit.

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

描述

a 32-bit unsigned integer on 32-bit platforms

64-bit unsigned integer on 64-bit platforms.

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