Вы должны знать, как работает autorelease. Каждый поток в вашем приложении обычно имеет один пул автоматического выпуска. Объекты могут быть зарегистрированы в пуле. В то время, когда они зарегистрированы, пул определяет кадр стека, к которому он принадлежит, и автоматически извлекает его из пула при каждом оставлении этого стека.
Хотя это может показаться дорогостоящим (и, безусловно, его сравнивают с прямым сохранением / выпуском), я не думаю, что это даже близко к стоимости, которую могут иметь отметка генерации и сборщик мусора.
Где авто-релиз действительно сияет, во всех ситуациях, когда могут возникать исключения, и нет никакой попытки / ловли вокруг. В таких случаях авто-релиз определенно предпочтительнее прямого выпуска.
Однако существуют ситуации, когда вам следует избегать автоматического выпуска (то же самое относится и к средам, собранным в garabge, где вы также должны попытаться избежать этих ситуаций). Создание временных автоматически выпущенных объектов в цикле, который выполняется огромное количество раз, - это такой сценарий, который создает значительную нагрузку для сборщика мусора или пула автоматического выпуска.
Следует избегать замены выпуска авто-выпуском в рабочих потоках, которые очень просты и могут жить без нагрузки на пул авто-выпуска. Итак, рекомендация такова: всякий раз, когда вы можете избежать этого, вы должны, когда вы не уверены в автоматическом выпуске.