Во многих книгах и на многих сайтах я вижу -drain. Ну, для Autorelease Pool, который звучит круто. Но делает ли он что-то другое, кроме выпуска? Я бы предположил, что -drain просто заставляет Pool -release все это объекты, не выпуская сам пул. Просто предположим.
Какая разница между отправкой -release или -drain в пул автообновлений?
Ответ 1
Обратите внимание, что комментарии по реакции oxigen, говорящие, что -drain не освобождают NSAutoreleasePool, неверны. Документация для NSAutoreleasePool четко говорит о том, что -drain выпускает (и таким образом уничтожает) NSAutoreleasePool.
-drain является заменой для использования -release для объектов NSAutoreleasePool, с той лишь разницей, что дает подсказку системе сбора мусора.
Ответ 2
Если в вашей системе есть сборка мусора, тогда -drain отправить сообщение (objc_collect_if_needed) для GC
Если у вас нет GC, то дренаж = выпуск
Ответ 3
Оксиген прав, см. документацию по методу drain
NSAutoreleasePool:
В среде с подсчетом ссылок, выпускает и выталкивает приемник; в сборку мусора, запускает сбор мусора, если память, выделенная с момента последнего сбор больше, чем текущий пороговое значение.