Обратите внимание, что сравниваемые переменные являются указателями на строки NSStrings. Сравнение указателей просто проверяет, ссылаются ли указатели на один и тот же адрес. Он ничего не знает о контенте в конце. Два строковых объекта в двух разных местах могут иметь одинаковое содержимое. Таким образом вам нужно isEqualToString:
. В этом случае я тоже не уверен, что это очень важное различие. Для меня было бы больше смысла, если бы это был специальный корпус, отправляющий уведомления об изменениях, основанные на том, будет ли новая строка действительно изменением.
Кстати, в установщике NSString вы почти всегда хотите copy
, а не retain
. Я не знаю точного варианта использования в этой книге, но если вы просто сохраните строку и она окажется изменчивой, она может измениться за вашей спиной и привести к странным результатам. И если строка не изменяемая, copy
это просто псевдоним для retain
.