Если вы создаете объект, используя метод, который начинается с init, new, copy или mutableCopy, то вы владеете этим объектом и несете ответственность за его освобождение (или автоматическое высвобождение) после завершения работы с ним. Если вы создаете объект, используя любой другой метод, этот объект автоматически освобождается, и вам не нужно его освобождать. В этом случае вам действительно нужно сохранить объект, если вы хотите сохранить его. У Apple есть Руководство по программированию управления памятью , которое включает все эти правила.
Код, который вы разместили, на самом деле правильный. Вам нужно освободить urlBase
и op
, потому что вы создали их, используя метод, начинающийся с init (в данном случае initWithFormat:
). final и nSum уже автоматически выпущены для вас. final был создан методом, который не начинается с init, new, copy или mutableCopy (в данном случае, фабричный метод stringByAppendingFormat:
). nSum был возвращен методом с именем text
, и вы можете предположить, что sumTextField «владеет» им или автоматически выпустил его перед возвратом вам, поэтому вы не несете ответственности за его освобождение.