Буквенная запись NSString
@""
дает вам постоянные строки времени компиляции, которые находятся в их собственном пространстве памяти и имеют постоянные адреса.
Вопреки распространенному мнению, причина, по которой вы не выпускаетеЛитеральные строки не потому, что они являются частью пула автоматического выпуска.Это не так - вместо этого они проводят весь срок службы приложения в том же пространстве памяти, которое они выделяют во время компиляции, и никогда не освобождаются во время выполнения.Они удаляются только тогда, когда процесс приложения умирает.
Тем не менее, единственное время, когда вам нужно управлять константой памяти NSString
s, это когда вы сохраняете или копируете их для себя.В этом случае вам следует освободить сохраненные или скопированные указатели, как и любой другой объект.
Другое дело: сами литералы не нуждаются в управлении памятью.Но если вы передадите их в качестве аргументов вспомогательным методам или инициализаторам NSString
, как вы делаете с stringWithFormat:
, то это те объекты, которые возвращаются методами и инициализаторами, которые обычно следуют всем правилам управления памятью.