2010-02-19 1 views
4

Я видел несколько сообщений здесь о проблеме использования сохранения или копирования для строк. Я все еще не могу понять свою разницу или важность.NSString сохранить копию вопроса

В моем случае на данный момент у меня есть класс со всей нагрузкой nsstrings для хранения строк.

Я хочу, чтобы этот класс был создан только один раз, и я хочу, чтобы его переменные nsstring менялись в зависимости от индекса, щелкнутого в виде таблицы.

Я бы правильно сказал, что если бы я решил использовать, сохраните, что мои nsstrings будут перезаписаны каждый раз, когда я устанавливаю их значение на мой клик таблицы и что, если бы я выбрал копию, у меня было бы как бы 2 экземпляра каждой строки. ..?

Мне очень жаль ..... я совершенно не понимаю

ответ

6

Это вопрос о копировании изменяемых объектов vs. неизменные из них. Так как NSString объекты являются неизменными (вы не можете изменить их содержание), они реализуют -копию так:

- (id) copyWithZone: (NSZone *) zone 
{ 
    return [self retain]; 
} 

Если вы думаете об этом, нет никаких причин, чтобы дублировать неизменяемый объект, потому что это пустая трата памяти. С другой стороны, объекты NSMutableString могут видеть изменение их содержимого во время их жизни, поэтому, если вы запросите копию NSMutableString, вы получите реальную копию, другой объект.

Если ваши строки не являются NSMutableStrings, неважно, сохраните или скопируйте их. Однако выбор правильного метода важен, если вы позже реорганизуете свой код для использования NSMutableStrings. Общая логика должна ответить на следующий вопрос: если я получу объект, содержимое которого может меняться снаружи, какое значение мне нужно? Чаще всего вы захотите сделать копию.

+0

Благодарим за разъяснения! Я не знал, что '[NSString copy]' просто сохранит. – MrMage