ContexteComment suspendre mon application jusqu'à la soumission d'un rapport d'erreur?
J'utilise UKCrashReporter dans mon application.
J'ai installé mon propre gestionnaire d'exceptions Uncaught .
J'installe la managedObjectContext de l'objet activeItemController dans applicationDidFinishLaunching (1)
Le problème
Si la méthode managedObjectContext lance une exception, le journaliste de l'accident La boîte de dialogue ne clignote que lorsque l'application se bloque et que l'utilisateur ne signale jamais le problème.
Je veux que mon application continue seulement après le crash a été signalé, pas pendant que la fenêtre est affichée.
Ce que j'ai essayé
Si UKCrashReporterCheckForCrash() étaient une méthode objective C, je suppose que je pourrais appeler performSelectorOnMainThread: waitUntilDone: OUI mais ce n'est pas.
Je l'ai regardé quelques autres Stack questions sur débordement using Conditional Locks pour mettre en pause des applications, mais je ne comprends pas comment je l'utilise pour une fonction C.
Comment est-ce que je ferais cela de façon agréable? Les gens ont-ils des conseils pour moi? Toutes les réponses seraient beaucoup appréciées.
Le code
// 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]];
}
Update 1
On m'a demandé plus de détails sur ce que je suis en train de faire, alors allons-y.
Le bug qui a déclenché cette réflexion était une exception lors de la fusion de managedObjectModels. Mon application a été prise dans une boucle d'impression "exception Uncaught" à la console toutes les quelques millisecondes. Et quand j'ai installé le gestionnaire d'exception uncaught avant que cette exception ne se produise, j'obtiendrais le comportement décrit - mon application se déclencherait, afficherait brièvement la boîte de dialogue de rapport de crash, puis continuerait de se charger et se bloquer à nouveau.
Résumé - Je veux être capable de gérer les erreurs qui se produisent au démarrage.(1) Je n'utilise pas de liaisons pour cela, car je pensais que les liaisons rendraient le test de la classe plus problématique.
C'est un excellent point. Je vois que d'avoir une certaine logique au démarrage est la voie à suivre. Je pense que j'ai besoin d'une autre plume qui ne déclenche que la plume actuelle s'il n'y a pas de plantage à signaler. Je ne suis toujours pas sûr de la façon dont j'irais à ce sujet, mais cela me donne un itinéraire à explorer, alors merci! Je vais mettre à jour ma question avec plus de détails en ce moment. –
En termes de UKCrashReporterCheckForCrash, il affiche la fenêtre de rapport d'erreur. Je pense que je devrais l'obtenir pour poster quelques notifications pour indiquer qu'un accident s'est produit ou que le rapport d'accident a été livré, à quel point je peux continuer à charger mon application. –