Я просматриваю старый код в одном из моих приложений и исправляю код в областях, которые могут быть потенциально проблематичными.NSRange: range.location! = NSNotFound vs. range.length> 0
Я вижу много старого кода, используя ...
NSRange range = //determine range here....
if(range.length > 0)
{
//do stuff
}
Это код «отлично», или я должен изменить его к этому?
NSRange range = //determine range here....
if(range.location != NSNotFound)
{
//do stuff
}
Эти два метода идентичны, по существу, или нет?
Интересный встречный пример теории, согласно которой проверка местоположения, равная NSNotFound и length> 0, по существу одинакова ... – MikeS
Для справки о том, что должна сказать документация для 'NSRegularExpressions': _ Если возвращаемый результат не равен нулю, тогда [диапазон результатов] всегда будет допустимым диапазоном, поэтому нет необходимости сравнивать его с {NSNotFound, 0 }. Однако для некоторых регулярных выражений (хотя и не для примера) некоторые группы захвата могут участвовать или не участвовать в заданном совпадении. Если данная группа захвата не участвует в заданном совпадении, тогда [result rangeAtIndex: idx] вернет {NSNotFound, 0} ._ – Joe