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