objective c - vib - ¿Por qué usar Autorelease pool?
vsphere web client 6.5 download (1)
Tu suposición es correcta. Cuando puede asegurarse de que un hilo específico nunca haga uso de objetos liberados automáticamente, ese hilo no necesitaría un grupo de autorrelease.
Evitar el autoreleasepool es un mal consejo, la moneda tiene dos lados. El uso de objetos liberados automáticamente conlleva una cierta cantidad de sobrecarga (aunque insignificante en la mayoría de los escenarios) que debe evitarse cuando sea posible. Especialmente en los casos en que hay múltiples salidas a un método, o se puede encontrar una excepción, el autorrelleno ayuda a evitar fugas de memoria y hace que el código sea más limpio.
Tenga en cuenta, sin embargo, que esto no significa que nada en ese hilo pueda usar la liberación automática, incluidos los marcos a los que pueda llamar. Hay situaciones en las que este es el caso, como en un escenario clásico de productor / consumidor. Usted tiene un productor que crea objetos, los distribuye a los hilos principales runloop, y puede registrarlos en los hilos principales de liberación automática en consecuencia.
En general, no recomendaría crear un hilo donde se lleve a cabo un trabajo significativo (además de un cálculo simple y de larga ejecución) sin un grupo de liberación automática.
Sé que hay un grupo de autorrelease creado en el método principal y todos los objetos que reciben el mensaje de liberación automática se almacenan en este grupo y se liberan cuando el grupo se agota.
Pero siempre se dice que evita la liberación automática de objetos para evitar pérdidas de memoria y, a su vez, bloqueos de aplicaciones.
Entonces, ¿por qué y en qué condiciones debemos usar autoreleasepool?
Los documentos de Apple sugieren que debemos usarlos cuando estamos utilizando subprocesos, por lo que al principio de un subproceso necesitamos crear un grupo de autorrelease y al final del subproceso drenarlo, pero ¿qué sucede si no estamos creando un objeto de liberación automática en el completo En ese momento, también es necesario crear un grupo de liberación automática al comienzo del hilo.
Por favor aclara mi confusión. Gracias.