【发布时间】:2009-12-02 13:09:14
【问题描述】:
背景
我在我的应用程序中使用了 UKCrashReporter。
我已经安装了自己的 Uncaught 异常处理程序。
我正在设置 对象的 managedObjectContext activeItemController 在 applicationDidFinishLaunching (1)
问题
如果 managedObjectContext 方法抛出异常,崩溃报告对话框只会在应用崩溃之前闪烁,因此用户永远不会报告崩溃。
我希望我的应用仅在报告崩溃后继续运行,而不是在窗口显示时继续运行。
我的尝试
如果 UKCrashReporterCheckForCrash() 是一种客观的 C 方法,我假设 我可以打电话 performSelectorOnMainThread:waitUntilDone:YES 但事实并非如此。
我查看了其他一些堆栈 关于using Conditional Locks暂停应用程序的溢出问题, 但我不明白我会如何使用它 对于 C 函数。
我将如何以一种好的方式来做这件事?人们有什么建议吗 为了我?任何回应都会很多 赞赏。
守则
// 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]];
}
更新 1
有人要求我提供有关我正在尝试做的事情的更多详细信息,所以就这样吧。
引发这种想法的错误是合并 managedObjectModels 时出现的异常。我的应用程序陷入循环,每隔几毫秒向控制台打印一次“未捕获的异常”。
当我在此异常发生之前安装未捕获的异常处理程序时,我会得到所描述的行为 - 我的应用会启动,短暂显示崩溃报告对话框,然后继续加载并再次崩溃。
总结 - 我希望能够处理启动时发生的错误。
(1) 我没有使用绑定来执行此操作,因为我认为绑定会使测试类更成问题。
【问题讨论】:
标签: objective-c cocoa crash timer crash-reports