Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在提交崩溃报告之前,如何暂停应用程序?_Objective C_Cocoa_Crash_Timer_Crash Reports - Fatal编程技术网

Objective c 在提交崩溃报告之前,如何暂停应用程序?

Objective c 在提交崩溃报告之前,如何暂停应用程序?,objective-c,cocoa,crash,timer,crash-reports,Objective C,Cocoa,Crash,Timer,Crash Reports,背景 我正在我的应用程序中使用UKCrashReporter 我已经安装了我自己的未损坏的 异常处理程序 我正在设置 对象的managedObjectContext 中的activeItemController ApplicationIDFinishLaunching(1) 问题 如果managedObjectContext方法引发异常,则崩溃报告器对话框仅在应用程序崩溃之前闪烁,因此用户永远无法报告崩溃 我只希望我的应用程序在报告崩溃后继续运行,而不是在显示窗口时 我尝试过的 如果UKC

背景

  • 我正在我的应用程序中使用UKCrashReporter

  • 我已经安装了我自己的未损坏的 异常处理程序

  • 我正在设置 对象的managedObjectContext 中的activeItemController ApplicationIDFinishLaunching(1)

问题

如果managedObjectContext方法引发异常,则崩溃报告器对话框仅在应用程序崩溃之前闪烁,因此用户永远无法报告崩溃

我只希望我的应用程序在报告崩溃后继续运行,而不是在显示窗口时

我尝试过的

  • 如果UKCrashReporterCheckForCrash() 我想这是一个客观的C方法 我可以打电话 performSelectorOnMainThread:waitUntilDone:是 但事实并非如此

  • 我已经看了一些其他的堆栈 溢出有关暂停应用程序的问题, 但我不明白我该怎么用它 对于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

有人问我要做什么的更多细节,所以我来了

触发这种想法的bug是合并managedObjectModels时的一个例外。我的应用程序在每隔几毫秒向控制台打印“未捕获异常”时陷入循环

当我在异常发生之前安装未捕获异常处理程序时,我会得到所描述的行为——我的应用程序会启动,短暂显示崩溃报告对话框,然后继续加载并再次崩溃

我希望能够处理启动时发生的错误


(1) 我没有使用绑定来实现这一点,因为我认为绑定会使测试类变得更麻烦。

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

只有在“我是否在提示用户提交崩溃报告”方法显示“否,请继续并正常启动”时,您才能最好地显示主UI(以及连接数据源等)。否则,显示您的窗口,当用户发送或拒绝发送报告时,关闭窗口并要求您的应用程序控制器继续正常启动


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

我想你的问题是把它看作是“暂停”你的应用程序。更多地将其视为不同的初始UI状态。您试图阻止运行循环将阻止任何交互式窗口。。。嗯,互动。:-)

只有在“我是否在提示用户提交崩溃报告”方法显示“否,请继续并正常启动”时,您才能最好地显示主UI(以及连接数据源等)。否则,显示您的窗口,当用户发送或拒绝发送报告时,关闭窗口并要求您的应用程序控制器继续正常启动


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

这是一个很好的观点。我认为在启动时有一些逻辑是一条路要走。我想我需要另一个nib,只有在没有崩溃报告的情况下才会激活当前的nib。我仍然不确定我该怎么做,但这给了我一条探索的道路,所以谢谢!我现在要用更多的细节更新我的问题。就UKCrashReporterChekForCrash而言,它确实显示了崩溃报告窗口。我想我应该让它发布一些通知,指出崩溃已经发生或崩溃报告已经提交,在这一点上我可以继续加载我的应用程序。这是一个很好的观点。我认为在启动时有一些逻辑是一条路要走。我想我需要另一个nib,只有在没有崩溃报告的情况下才会激活当前的nib。我仍然不确定我该怎么做,但这给了我一条探索的道路,所以谢谢!我现在要用更多的细节更新我的问题。就UKCrashReporterChekForCrash而言,它确实显示了崩溃报告窗口。我想我应该让它发布一些通知,指出崩溃已经发生或崩溃报告已经提交,在这一点上我可以继续加载我的应用程序。