Autorelease pools en Objective-C - lanzamiento de AutoreleasePool principal?

Por mi entendimiento, cuando un objeto se envía unautorelease mensaje, si no existen agrupaciones de liberación automática que no sea la demain.m, el objeto se coloca en el demain.m. Suponiendo que esto sea correcto, tengo un par de preguntas:

1) ¿Todos los objetos lanzados automáticamente permanecen en ese grupo hasta la finalización de la aplicación?

2) Si 1 es verdadero, la creación de un objeto lanzado automáticamente sin un grupo de liberación automática local (por lo tanto, coloca ese objeto en elmain.m pool) ¿mantener ese objeto en la memoria hasta que finalice la aplicación o se reciba una advertencia de memoria?

3) ¿Cuándo es elmain.m grupo de liberación automática drenado, excepto cuando la aplicación recibe una advertencia de memoria o la aplicación finaliza?

Por ejemplo, en un método de delegado cellForRowAtIndexPath como este:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Foobar"];
if (cell == nil) {
    // No cell to reuse => create a new one
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Foobar"] autorelease];

    // lots of custom stuff
}

return cell;

¿Cuándo se liberan realmente las células? Deben publicarse automáticamente, porque no puede liberarlos antes de devolverlos, y no puede liberarlos después, porque están fuera de alcance. Según mi entendimiento actual, las celdas se colocan en el grupo de liberación automática más alto y se liberan cuando ese grupo se drena / libera. En este caso, ese sería el único grupo de liberación automática en la aplicación; el demain.

4) El problema con esto es que incluso cuando he terminado con esas celdas y se ha liberado el controlador de vista, las celdas permanecen en la memoria, ¿sí? Si este no es el caso, ¿alguien podría dar una explicación de cómo funciona realmente la gestión de la memoria en esta situación? ¡Gracias

Nota: He mirado la documentación de Apple, pero habla principalmente sobre cuándo usar sus propios grupos locales de liberación automática, pero no mucho sobre cómo funcionan realmente.

Respuestas a la pregunta(4)

Su respuesta a la pregunta