iOS:退出(0)是否生成崩溃报告?如果是,还有什么替代方案?

iOS:退出(0)是否生成崩溃报告?如果是,还有什么替代方案?,ios,ipad,exit,Ios,Ipad,Exit,我听说仅仅使用exit()甚至提供零参数都会导致iOS生成崩溃报告。但在某些情况下,最好执行退出(0)。那么,如果不允许exit(),那么退出应用程序的公认方式是什么? 谢谢。为什么要以编程方式退出/崩溃应用程序?如果您告诉我们更多关于您正在尝试做的事情,人们可能会想到一个解决办法(a)不要将调用退出作为正常应用程序流程的一部分。这将导致你的应用被应用商店拒绝 和B)如果需要回溯和/或崩溃报告,则抛出异常,生成的崩溃日志将显示异常发生的位置(带有回溯) 我觉得你的问题只是关于退出你的应用程序。你

我听说仅仅使用exit()甚至提供零参数都会导致iOS生成崩溃报告。但在某些情况下,最好执行退出(0)。那么,如果不允许exit(),那么退出应用程序的公认方式是什么?
谢谢。

为什么要以编程方式退出/崩溃应用程序?如果您告诉我们更多关于您正在尝试做的事情,人们可能会想到一个解决办法(a)不要将调用
退出作为正常应用程序流程的一部分。这将导致你的应用被应用商店拒绝

和B)如果需要回溯和/或崩溃报告,则抛出异常,生成的崩溃日志将显示异常发生的位置(带有回溯)


我觉得你的问题只是关于退出你的应用程序。你不应该以编程方式退出应用程序,而是让用户在决定是时候终止应用程序时退出。在任何情况下,当你的应用程序完成它正在做的任何事情时,你可以做的一件好事就是在你的应用程序进入后台状态时释放所有资源

如果你想让你的应用程序不再出现在前台,让它向Safari发送一个有效的URL。如果您不希望Safari出现在前台时应用程序处于后台,请在应用程序的plist中设置UIApplicationExitsOnSuspend键。如果应用程序完整性检查“以某种方式”失败(收据验证代码的校验和错误等),那么可能会丢弃一些内存池和/或您自己的调用堆栈,让操作系统来处理它。

应用程序无法自行退出。从:

不要以编程方式退出

永远不要以编程方式退出iOS应用程序,因为人们往往会将其解释为崩溃。但是,如果外部环境阻止您的应用程序按预期运行,您需要将情况告知用户,并解释他们可以做些什么。根据应用程序故障的严重程度,您有两种选择

显示一个有吸引力的屏幕,描述问题并提出纠正建议。屏幕提供反馈,让用户确信您的应用程序没有问题。它将用户置于控制之下,让他们决定是采取纠正措施并继续使用您的应用程序,还是按Home按钮打开其他应用程序

如果只有应用程序的某些功能不起作用,则在用户激活该功能时显示屏幕或警报。仅当用户尝试访问不起作用的功能时才显示警报


如果一个应用程序在运行过程中的数据变得杂乱无章,有时退出该应用程序并从头开始会更有意义,因为将其分解会更加耗费大量的工作。如果你的意思是像腐败一样杂乱无章,那么请修复导致此问题的错误。一个救援按钮是令人难以置信的邋遢。如果你的意思是用户输入了应该丢弃的数据,那么请提供一个清除当前数据的按钮。@Philipp:App self检测到一个在测试、QA或App review中从未发现的未知字符的严重顶级错误。我认为苹果对此的想法是短视的。确实有一些情况下,退出是首选。具有简单数据的简单应用程序可能不需要使用exit,但具有复杂数据集的复杂应用程序可以从使用exit中获益,因为解开数据纠缠的成本可能很高。应用程序永远不应该退出,用户将不了解发生了什么,开发人员也永远不会获得关于出错原因的任何数据。切勿写入损坏的数据,因此请在写入之前进行检查。而是检查写入是否成功,如果没有,则不提交事务。如果仍有任何问题,请让应用程序崩溃,收集崩溃报告,并在应用程序启动时确保用安全数据替换损坏的数据。如果应用程序存在严重错误,将阻止应用程序继续运行,则上述引用似乎不适用。如果应用程序存在严重错误,然后,解决方案是修复导致应用程序出现严重错误的bug。这并不是为了希望问题消失而“反复开关”。苹果有很多质量准则,而一个因为错误而需要重启按钮的应用程序是一个不会被批准的应用程序。什么错误?应用程序未通过完整性检查,该完整性检查不在错误列表中。2.1:将拒绝崩溃的应用程序。2.2:显示错误的应用将被拒绝。该应用从未崩溃或显示正在检查的问题。