Авто-релиз обычно не неправильный
что нужно сделать ... я думал, что это действительно
память интенсивная, поэтому следует
естественно, неправильно поступить.
Это совсем не «интенсивная память». Если вы выделите и автоматически освободите очень большое количество объектов, например, в цикле, или меньшее количество больших объектов, вы можете столкнуться с проблемами. Но автоматическое освобождение просто задерживает освобождение объектов, которые вы в любом случае создаете, и которые могут или не могут даже быть освобождены, когда освобождение действительно происходит (объекты с автоматическим освобождением могут также сохраняться другими объектами).
Если вы можете немедленно освободить объект, сделайте это. Если вам нужно сделать авто-релиз, сделайте это и не беспокойтесь о памяти. Если вы создаете много объектов в каждой итерации цикла, вы можете рассмотреть возможность использования собственного пула автоматического выпуска или создания указанных объектов с помощью alloc / init, чтобы вы могли немедленно их освободить.
Но что касается последнего предложения, боюсь, я его не понимаю.
Если бы метод должен был освобождать каждый объект, который он создал перед возвратом, не было бы никакого способа вернуть объект, не требуя, чтобы вызывающая сторона освободила возвращенный объект. Авторелиз позволяет методу создать объект и освободить его, но отложить этот выпуск до тех пор, пока вызывающая сторона не сможет использовать и, возможно, сохранить возвращенный объект.