Старайтесь не думать о том, являются ли объекты автоматически выпущенными или нет.На самом деле, многие объекты, возвращаемые из вспомогательных методов, вообще не высвобождаются автоматически, это могут быть, например, статические экземпляры.
Вместо этого просто подумайте, являетесь ли вы владельцем объекта или нет.Для методов, которые имеют alloc
, new
или copy
в имени - или для объектов, для которых вы явно получили право собственности с помощью retain
- это подразумевает, что вы владеете возвращенным объектом,и что вы должны отказаться от владения с release
.Для объектов, которые вам не принадлежат, вам не нужно release
их.
правила управления памятью очень просты.Зафиксируйте их в памяти, и ответы на подобные вопросы станут второй натурой.