2010-07-21 7 views
7

La aplicación de mi iPhone se bloquea ocasionalmente la primera vez que se ejecuta después de su instalación. Después de esto, cada vez que intento ejecutar la aplicación, permanece en la pantalla de bienvenida o incluso en una pantalla negra hasta que finalmente muere. Tengo que reiniciar el dispositivo para que la aplicación funcione. Después de esto, funciona bien todo el tiempo. El único cambio entre el código OS3 y 4 es la propiedad 'UIApplicationExitsOnSuspend' para forzar a la aplicación a volver a cargar cada vez en lugar de suspender. Cualquier ayuda sería genial.Fallo de la aplicación de iPhone (solo iOS4)

Éstos son los fragmentos de código de dos:

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{ 
    taskListViewController = [[TaskListViewController alloc] initWithNibName:@"TaskListView" bundle:nil]; 
    taskListViewController.managedObjectContext = self.managedObjectContext; 

    [taskListViewController setAppDefaults]; 

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:taskListViewController]; 
    [taskListViewController release]; 

    navController.navigationBar.tintColor = [UIColor blackColor]; 

    [window addSubview:[navController view]]; 
    [window makeKeyAndVisible]; 

}

- (void)viewDidLoad 
{ 
    NSLog(@"viewDidLoad - Start"); 
    [super viewDidLoad]; 

    NSError *error = nil; 
    if(![[self fetchedResultsController] performFetch:&error]) 
    { 
    NSLog(@"Error with initial fetch %@, %@", error, [error userInfo]); 
    } 

    [activityIndicator startAnimating]; 

    self.navigationItem.leftBarButtonItem.enabled = NO; 
    self.navigationItem.rightBarButtonItem.enabled = NO; 
    infoButton.enabled = NO; 
    syncButton.enabled = NO; 

    taskListTable.userInteractionEnabled = NO; 
    taskListTable.allowsSelection = NO; 

    checkingRecovery = true; 
    [self insertCheck]; 
} 

Otros métodos mencionados anteriormente:

[taskListViewController setAppDefaults] 
    [self insertCheck]; 

setAppDefaults - Enumera a través de los ajustes del lote, la aplicación de las DefaultValues ​​a NSUserDefaults si el usuario ya no lo ha establecido en las referencias.

insertCheck - Realiza algunas consultas en el archivo db para garantizar la integridad del archivo en las grabaciones de audio, pero en este caso, ya que esta es la primera vez que se carga la aplicación, no hará nada.

Actualización:

he comentado a cabo las llamadas a métodos adicionales (los dos anteriores) y sigo teniendo el problema.

He encontrado algunas personas que tienen el mismo tipo de problema en el foro de desarrolladores de Apple sin soluciones. Una respuesta fue de un usuario que tiene el mismo problema pero la aplicación fue aprobada en la tienda de aplicaciones.

Gracias Sj

+0

Es posible que desee editar su publicación para incluir el código de lo que está sucediendo en los métodos 'applicationDidFinishLaunching' y' viewDidLoad'. Además, asegúrese de no tener ningún 'NSLogs' con cadenas de formato de datos incorrectas (% d cuando debería ser% @, por ejemplo), pueden causar un bloqueo sin que se muestren mensajes de error. – iwasrobbed

+0

La carga de la ventana parece normal, diría que si no se debe a los valores predeterminados del usuario, comience a depurar el código de verificación de la base de datos o los resultados de recuperación iniciales. – iwasrobbed

Respuesta

0

¿Has mirado en los archivos de registro?

Puede copiarlos de su iPhone si lo conecta, carga el organizador (Windows-> Organizador en XCode) y selecciona los registros del dispositivo.

Si ve un registro para el momento en que su aplicación se estrelló, debe incluir la pila de llamadas (que debe incluir la función provocando que se bloquee)

alternativa podría ser que usted está atascado en algún código de ejecución al inicio, y si su aplicación no se inicia en el momento oportuno (dentro de los 30 segundos de IIRC) iOS lo mata.

+0

No parece tener ningún registro de bloqueo con respecto a la aplicación. Gracias. – Sjblack

+0

¡Otra cosa que he notado es que la desinstalación de la aplicación y su reinstalación sin reiniciar el dispositivo no soluciona el problema! Gracias de nuevo. – Sjblack

0

Pruébalo sin la pieza managedObjectContext y comprueba si sigues bloqueando. ¿Qué dice el registro cuando bloqueas? ¿Obtienes una excepción de memoria?

1

Si está depurando la aplicación cuando se bloquea, debe obtener un seguimiento de la pila, que le mostrará en qué línea falla la aplicación.

Si pudiera proporcionar el seguimiento de la pila, sería mucho más fácil encontrar la causa del bloqueo.

+0

Me temo que cuando se bloquea no ha llegado al punto de entrada de la aplicación en el código, así que no obtengas ningún registro de bloqueo. Gracias - Sj – Sjblack

Cuestiones relacionadas