objective framework developer apple apis iphone cocoa cocoa-touch memory-management autorelease

iphone - framework - ¿Cuál es la diferencia entre el envío o la eliminación a un grupo de Autorelease?



swift ios documentation (3)

En muchos libros y en muchos sitios veo - drene. Bueno, para un Pool de Autorelease que suena genial. ¿Pero hace algo más que un lanzamiento? Me atrevo a suponer que el drenaje solo hace que la Piscina libere todos sus objetos, sin liberar la Piscina en sí. Solo una suposición.


Si su sistema tiene una recolección de basura, entonces -drain enviar mensaje (objc_collect_if_needed) para GC

Si no tienes GC, entonces drena = suelta


Tenga en cuenta que los comentarios en la respuesta de oxigen que dicen que -drain no libera NSAutoreleasePool no son correctos. La documentación para NSAutoreleasePool dice claramente que -drain libera (y por lo tanto destruye) el NSAutoreleasePool.

-drain es un reemplazo para el uso de -release para NSAutoreleasePool objetos, la única diferencia es que proporciona una sugerencia para el sistema de recolección de basura.


Oxigen tiene razón, consulte la documentación para el drain del método de NSAutoreleasePool :

En un entorno de referencia, libera y abre el receptor; en un entorno de recolección de basura, activa la recolección de basura si la memoria asignada desde la última recolección es mayor que el umbral actual.