Objective-C Синтаксический Вопрос - PullRequest
1 голос
/ 25 мая 2010

Просто проведу некоторое исследование по поиску символа или слова в NSString, и я наткнулся на этот фрагмент кода (который работает как шарм):

return [sourceString rangeOfString:searchString].location != NSNotFound;

Прав ли я, думая, что приведенный выше кодфункционально идентичен:

NSRange range = [sourceString rangeOfString:searchString];
if (range.location == NSNotFound)
    return NSNotFound;
else
    return range.location;

Очевидно, что первый фрагмент намного чище, но я не совсем понимаю, что такое != NSNotFound.Может ли кто-нибудь объяснить это мне?

Ответы [ 2 ]

9 голосов
/ 25 мая 2010

Оператор != оценивается как логическое значение, поэтому он эквивалентен:

NSRange range = [sourceString rangeOfString:searchString];
if (range.location == NSNotFound)
    return NO;
else
    return YES;

Что совпадает с:

NSRange range = [sourceString rangeOfString:searchString];
BOOL didNotFind = (range.location == NSNotFound);
return !didNotFind;
3 голосов
/ 25 мая 2010

На самом деле нет, это эквивалентно:

NSRange range = [sourceString rangeOfString:searchString];
if (range.location == NSNotFound)
    return NO;
else
    return YES;

Что можно записать короче как:

NSRange range = [sourceString rangeOfString:searchString];
BOOL result = range.location != NSNotFound;
return result;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...