gpt4 book ai didi

objective-c - 如何暂停我的应用程序直到提交崩溃报告?

转载 作者:行者123 更新时间:2023-12-03 17:17:59 25 4
gpt4 key购买 nike

背景

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

  • 我已经安装了自己的 Uncaught异常处理程序。

  • 我正在设置对象的 ManagedObjectContextactiveItemController 中applicationDidFinishLaunching (1)

问题

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

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

我尝试过的

  • 如果 UKCrashReporterCheckForCrash()我认为是一种客观的 C 方法我可以打电话PerformSelectorOnMainThread:waitUntilDone:YES但事实并非如此。

  • 我看过其他一些堆栈关于 usingConditional 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

有人要求我提供有关我正在尝试做的事情的更多详细信息,所以这里是。

引发这种想法的 bug 是合并 ManagedObjectModel 时的一个异常。我的应用程序陷入循环,每隔几毫秒就将“未捕获的异常”打印到控制台。

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

摘要 - 我希望能够处理启动时发生的错误。

(1) 我没有使用绑定(bind)来执行此操作,因为我认为绑定(bind)会使测试类变得更加困难。

最佳答案

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

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

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

关于objective-c - 如何暂停我的应用程序直到提交崩溃报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1832795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com