Скомпилируйте NSLog с unsigned int и unsigned long на iOS и OSX без предупреждения

На iOS NSUInteger это unsigned intна OSX это unsigned long, Как я могу сделать заявление о печати, как

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

компилировать на обеих платформах без предупреждения? Я могу, конечно, использовать #ifdef #else #endif построить, но это добавит 4 строки кода. Я также мог бы привести возвращаемое значение к unsigned int. Есть ли более короткое решение?

2 ответа

Решение

Как насчет броска к большему из двух?

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

В iOS нет предупреждений, и я думаю, что в OSX это не работает.

Как насчет броска к большему из двух?

NSLog(@"Array has %ld elements.",(unsigned long)[array count]);
No warning in iOS, and I think it's a no-op in OSX.
Другие вопросы по тегам