unsigned int и unsigned long Xcode предупреждений в NSLogs

Это больше раздражает, чем что-либо еще. Кто-нибудь еще сталкивался с этим?

В целях отладки я выкладываю счет _fetchedResults, Xcode дает мне unsigned int предупреждение, когда я использую %u, а затем предлагает изменить его на %lu,

ОК XCode, конечно, идти вперед.

Затем он немедленно лает на меня снова с unsigned long предупреждение и предлагает поменять его обратно %lu к %u, И цикл повторяется. Конечно, я могу просто удалить NSLog, но я использую его во время тестирования. И, честно говоря, это более раздражает, чем все остальное.

Кто-нибудь еще сталкивался с этим раньше? Не уверен, насколько это важно, но я нахожусь на Xcode 7.3 с целью развертывания 9.0.x.

2 ответа

Решение

Проверьте этот SO поток: скомпилируйте NSLog с unsigned int и unsigned long

Это говорит-

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

А также говорит-

Лучший способ это NSLog(@"%lu", (unsigned long)array.count); для NSUInteger,
а также NSLog(@"%ld", (long)button.tag); для NSInteger: нет предупреждений ни в 32-битной, ни в 64-битной.

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

Описание

32-разрядное целое число без знака на 32-разрядных платформах

64-разрядное целое число без знака на 64-разрядных платформах.

Type       Format Specifier    Cast
----       ----------------    ----
NSInteger    %ld               long
NSUInteger   %lu               unsigned long
Другие вопросы по тегам