цель C NSString сохранить - PullRequest
       36

цель C NSString сохранить

1 голос
/ 05 апреля 2010

Если я создаю строку с [NSString StringWithFormat], должен ли я [сохранять] ее? Насколько я понимаю, вспомогательные методы добавляют объекты в пул автоматического выпуска. Если это так, не должны ли мы сохранить объект, чтобы он не сливался с пулом в конце цикла событий?

1 Ответ

1 голос
/ 05 апреля 2010

Если строка должна сохраняться за пределами текущей функции, тогда да, объект, который нуждается в ней, должен сохранить ее. Вот одно из тех мест, где английская формулировка кажется тривиальной, но на самом деле скрывает ключевую концепцию. Вместо того, чтобы сказать "я должен сохранить это?" или (как я изначально писал) «если вы хотите, чтобы строка сохранялась», говорите с точки зрения объекта, сохраняющего строку. Разница заключается в том, что последнее выражает концепцию владения (примечание: в документации Apple используется слово «вы», когда речь идет о владении, но это не «от вас», а от третьего лица «вы» ). Конечно, если вы храните строку в свойстве , то сохранение (или копирование) обрабатывается для вас. Если вам не нужно ориентироваться на более старые версии OS X (10.4 и более ранние), вы, как правило, должны использовать свойства.

Стандартные коллекции владеют объектами, которые они содержат, и таким образом сохраняют их. Когда элемент удаляется из коллекции, коллекция освобождает элемент (примечание: они не выпускаются автоматически, поэтому, если у объекта нет других владельцев, объект будет уничтожен). Подробнее об этой теме читайте в " Срок действия общих объектов ". Документация Apple по управлению памятью должна рассказать вам все, что вам нужно знать.

...