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