Apple не говорит " вручную освободить все объекты, которые вы создаете" - они просто говорят "освободить в конечном итоге все объекты, которые вы создаете". Это может быть сделано ручным выпуском или автоматическим выпуском.
Авто-релиз - это в основном просто ручное освобождение, которое происходит в более поздний момент (в момент, когда вызывается [NSAutoreleasePool drain]
или [NSAutoreleasePool release]
).
Если вы хотите, чтобы один из ваших методов возвратил объект, принадлежащий вызывающей стороне, вы должны использовать autorelease, потому что, если вы вызываете release до того, как ваш 'return' и значение retain обнуляется, оно обнуляется (что обычно бывает Вы только что сделали объект), тогда объект будет немедленно удален и затем непригоден для использования. Вызывающий метод находит себя с указателем на какой-то не-объект мусора.