【问题标题】:How do I pause my app until a crash report has been submitted?如何在提交崩溃报告之前暂停我的应用程序?
【发布时间】: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


    【解决方案1】:

    我认为您的问题在于将其视为“暂停”您的应用程序。更多地将其视为不同的初始 UI 状态。您阻止运行循环的尝试将阻止任何交互式窗口......好吧,是交互式的。 :-)

    您最好的选择是仅当“我是否提示用户提交崩溃报告”方法说“不,继续并正常启动”时才显示您的主 UI(并连接数据源等)。否则,显示您的窗口,当用户发送或拒绝发送报告时,关闭窗口并要求您的应用控制器继续正常启动。

    我查看了 UKCrashReporterCheckForCrash(),它似乎没有创建任何类型的窗口。它只是提交崩溃。你能更详细地描述一下你在做什么吗?

    【讨论】:

    • 这很好。我看到在启动时有一些逻辑是要走的路。我想我需要另一个笔尖,如果没有要报告的崩溃,它只会启动当前的笔尖。我仍然不确定我会怎么做,但这给了我一条探索的路线,所以谢谢!我现在将用更多细节更新我的问题。
    • 就 UKCrashReporterCheckForCrash 而言,它确实显示了崩溃报告窗口。我想我应该让它发布一些通知,以表明发生了崩溃或已发送崩溃报告,此时我可以继续加载我的应用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多