2015-02-28 5 views
0

У меня довольно большое приложение (цель-c), я решил включить предупреждения «Знак сравнения». Сейчас у меня их почти 100. Большинство из них похожи на это:Сравнение NSIntegers (или int) с NSUInteger (или unsigned int)

if (recentSearches.count > indexPath.row) { 
    //something 
} 

и ошибки похожи на это:

Comparison of integers of different signs: 'NSUInteger' (aka 'unsigned int') and 'NSInteger' (aka 'int') 

, что некоторые хорошие стратегии или советы о том, как их все решать? Thanks

ответ

0

Действительно, вы хотите продолжить и изменить объявления, чтобы типы соответствовали, когда вы сравниваете. Например, переменная count должна быть без знака. Это, безусловно, самое безопасное. Если вы перерабатываете переменную, чтобы она сравнивалась с другими вещами, которые могут быть как подписанными, так и неподписанными, измените это! Только приведение типов, когда вы явно проверили, что это безопасно, сделайте так. Например, если подписанный int равен> 0, вы можете применить его к unsigned int. Другое направление небезопасно, если вы не обрабатываете диапазон значений, который может содержать unsigned int, которые слишком велики для подписанного int!