Я смотрю на некоторый открытый исходный код и пытаюсь понять, почему автор сделал что-то определенным образом.
Класс является оберткой вокруг NSArray
для создания структуры данных стека с push, pop и т. д.
Один метод - topObject
, который возвращает самый верхний объект в стеке, и его реализация:
- (id)top {
return [[[stack lastObject] retain] autorelease]; // stack is an instance of NSMutableArray
}
Что с сохранением, сопровождаемым немедленным автоматическим выпуском?
Моя первоначальная реакция состояла в том, что это предотвратило бы предупреждение анализатора об утечке памяти, но я проанализировал без сохранения / автоматического выпуска, и все еще не было никакого предупреждения.
Глядя на жизненный цикл, объект будетбыть создан, помещен в стек и освобожден, так что стеку принадлежит объект (базовый массив сохранит его при добавлении).
Так что я не понимаю использования здесь retain / autorelease ...