Вы сказали:
Если я просто удалю сообщение об автоматическом выпуске, obj будет немедленно освобожден в конце getAutoreleasedObj
Это неверно.Поскольку имя вашего метода (getAutoreleasedObj
) не соответствует шаблону alloc / init / copy / mutableCopy / new, ARC автоматически предполагает, что вы хотите, чтобы obj
был автоматически освобожден.
Вы не сливаете ни одинпул автоматического выпуска в конце getAutoreleasedObj
, поэтому obj
не будет выпущен.
Некоторый пул автоматического выпуска активен, когда ваш код выполняется.Если вы не настроили пул авто-релиза вручную, то активный пул будет создан в цикле выполнения Какао.Этот пул сливается в конце каждого прохода цикла выполнения.
Таким образом, если вы не настроили где-то свой собственный пул, объект, который вы создаете в getAutoreleasedObj
, будет существовать до конца текущей итерации.цикла выполнения.