Pregunta

Fondo

  • Estoy usando UKCrashReporter en mi aplicación.

  • He instalado mi propio no detectada Del controlador de excepciones.

  • Soy la creación de la managedObjectContext del objeto activeItemController en applicationDidFinishLaunching (1)

El problema

Si el método managedObjectContext lanza una excepción, el cuadro de diálogo reportero accidente sólo parpadea antes de la aplicación se bloquea por lo que el usuario nunca llega a reportar el accidente.

Quiero que mi aplicación para seguir solamente después el accidente se ha informado, no mientras la ventana está mostrando.

Lo que he tratado

  • Si UKCrashReporterCheckForCrash () fuera un método objetivo C, Asumo Podría llamar performSelectorOnMainThread: waitUntilDone: SÍ pero no lo es.

  • He mirado en alguna otra Pila preguntas sobre desbordamiento utilizando Cerraduras condicionales para hacer una pausa aplicaciones, pero no puedo entender cómo lo utilizaría para una función C.

¿Cómo voy a ir haciendo esto de una manera agradable? ¿Las personas tienen algún consejo    ¿para mi? Las respuestas serían mucho    apreciado.

El Código

// In app delegate

-(void)applicationWillFinishLaunching:(NSNotification *)aNotification {
        UKCrashReporterCheckForCrash();   // A C function which then creates a window if
                                          // it detects a crash has happened.
}

-(void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    [activeItemController setMoContextDisk:[self managedObjectContext]];
    [activeItemController setMoContextMemory:[self managedObjectContextMemory]];
}

Actualización 1

Me han pedido para más detalles sobre lo que estoy tratando de hacer, así que aquí va.

El error que dio origen a este pensamiento fue una excepción cuando la fusión managedObjectModels. Mi aplicación quedó atrapado en un bucle de impresión "excepción no capturada" a la consola cada pocos milisegundos.

Y cuando he instalado el controlador de excepciones antes de que ocurriera esta excepción, que conseguiría el comportamiento descrito -. Mi aplicación podría encender, mostrar el diálogo de informe de bloqueo brevemente, y luego continuar a cargar y accidente de nuevo

Resumen - Quiero ser capaz de manejar los errores que se producen en el arranque

.

(1) No estoy usando fijaciones de hacer esto, como pensaba fijaciones harían a probar la clase más problemática.

¿Fue útil?

Solución

Creo que su problema es con el pensamiento de él como "pausa" de la aplicación. Piense que es más como un estado de interfaz de usuario inicial diferente. Sus intentos de bloquear el bucle de ejecución evitarán cualquier ventana interactiva de ... bueno, de ser interactivo. : -)

Su mejor apuesta es para mostrar la interfaz de usuario principal (y conectar las fuentes de datos, etc) sólo si el "yo estoy pidiendo al usuario que presente un informe de bloqueo" método dice "no, seguir adelante y comenzar normalmente". De lo contrario, mostrar su ventana y, cuando el usuario envía o se niega a enviar el informe, cierre la ventana y pedir su controlador de aplicación para seguir el inicio normal.

Miré UKCrashReporterCheckForCrash () y no aparece para crear una ventana de ningún tipo. Simplemente se somete el accidente. Podría describir lo que está haciendo con más detalle?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top