Это вопрос о копировании изменяемых и неизменяемых объектов.Поскольку объекты NSString являются неизменяемыми (вы не можете изменять их содержимое), они реализуют -copy следующим образом:
- (id) copyWithZone: (NSZone *) zone
{
return [self retain];
}
Если вы подумаете об этом, нет причин дублировать неизменяемый объект, поскольку это пустая трата памяти.С другой стороны, объекты NSMutableString могут видеть, как их содержимое изменяется в течение их времени жизни, поэтому, если вы запросите копию NSMutableString, вы получите реальную копию, другой объект.
Если ваши строки не являются NSMutableStrings, не имеет значения, сохраняете ли вы их или копируете.Тем не менее, выбор правильного метода важен, если впоследствии вы реорганизуете код для использования NSMutableStrings.Общая логика должна ответить на следующий вопрос для вас: если я получу объект, содержимое которого может измениться снаружи, какое значение мне нужно?Чаще всего вам захочется сделать копию.