¿Por qué la función main () de una aplicación de iPhone nunca tiene la oportunidad de terminar?

Considera lo siguientemain() método que encontraría en la mayoría de las aplicaciones de iPhone:

int main(int argc, char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
}

En cada aplicación de iPhone que he ejecutado en Simulator con estos (incluidos varios proyectos de muestra proporcionados por Apple), el hilo nunca saleUIApplicationMain() y cualquier código restante enmain() nunca se ejecuta. ¿Es este comportamiento esperado?

He verificado esas declaraciones después deUIApplicationMain() nunca se ejecuta al recorrer el código con un depurador. Cuando el usuario detiene una aplicación (presionando el botón "Inicio", por ejemplo), el seguimiento de la pila resultante muestra que[UIApplication _terminateWithStatus:] finalmente se llama. Esta función llama a su delegado de aplicaciónapplicationWillTerminate: método. Una vez que eso termina,[UIApplication _terminateWithStatus:] parece matar / salir del hilo.

Puede alguien confirmar que así es comomain()@ se supone que funciona, o al menos confirma el mismo comportamiento en su máquina?

Respuestas a la pregunta(6)

Su respuesta a la pregunta