有谁知道exit(0)
在 iOS 应用程序中是否已弃用?我知道手动终止应用程序不是一个好的决定,但是如果我们在代码中使用它,Apple 会禁止该应用程序吗?
3 回答
不,您不能调用 exit,因为您的应用程序应该被拒绝。这已被 Apple 反复劝阻,并且已知会导致 iOS 多任务切换出现严重错误。您应该让用户自己使用主页按钮。
http://developer.apple.com/library/ios/#qa/qa1561/_index.html
“此外,可能不会保存数据,因为 -applicationWillTerminate: 和类似的 UIApplicationDelegate 方法不会在您调用 exit 时被调用。如果在开发或测试期间需要终止您的应用程序,建议使用中止函数或断言宏。”
2012-04-09
更新以更强烈地阻止退出功能,并包括调试的最佳实践。
2008-08-27
新文档讨论了在代码中终止 iOS 应用程序的最佳实践。
“不要以编程方式退出
永远不要以编程方式退出 iOS 应用程序,因为人们倾向于将其解释为崩溃。但是,如果外部环境阻止您的应用程序按预期运行,您需要告诉您的用户这种情况并解释他们可以做些什么。根据应用程序故障的严重程度,您有两种选择。
显示一个有吸引力的屏幕,描述问题并提出更正建议。屏幕会提供反馈,让用户确信您的应用没有任何问题。它让用户可以控制,让他们决定是否要采取纠正措施并继续使用您的应用程序,或者按下主页按钮并打开另一个应用程序
如果只有部分应用功能不可用,请在人们使用该功能时显示屏幕或提醒。仅当人们尝试访问不起作用的功能时才显示警报。
如有必要,显示许可协议或免责声明
如果您为您的 iOS 应用程序提供最终用户许可协议(或 EULA),App Store 会显示它,以便人们在获得您的应用程序之前可以阅读它。
如果可能,请避免要求用户在首次启动您的应用程序时表明他们同意您的 EULA。在没有显示协议的情况下,用户可以毫不拖延地享受您的应用程序。但是,即使这是首选的用户体验,也可能并非在所有情况下都可行。如果您必须在您的应用程序中显示许可协议,请以与您的用户界面协调一致的方式执行此操作,并将给用户造成的不便降至最低。
如果可能,请在您的应用说明或 EULA 中提供免责声明。用户随后可以在 App Store 中查看免责声明,您可以平衡业务需求和用户体验需求。”
不,Apple 不会拒绝您的应用使用exit(0)
.
你是对的,这不是一个很好的设计选择,但有时它可能很有用。
正如 Larme 所说,如果使用不当,可能会被视为崩溃,而崩溃将导致您的应用程序被拒绝。
applicationDidEnterBackground
但是,当您(在有条件的情况下)您可能希望强制应用程序重新启动时,它可能非常有用。
我有一个应用程序由于退出方式(通过 UIAlertView)而被拒绝,exit(5)
当用户单击正确的按钮时执行此操作。
我收到了:
我们发现您的应用包含一个用于退出应用的 UI 控件。这不符合 App Store 审查指南所要求的 iOS 人机界面指南。
请参阅随附的屏幕截图以供参考。
iOS 人机界面指南指定,
“随时准备停止当人们按下 Home 按钮打开不同的应用程序或使用设备功能(例如手机)时,iOS 应用程序会停止。特别是,人们不会点击应用程序关闭按钮或从菜单中选择退出。为了提供良好的停止体验,iOS 应用程序应该:
尽快并尽可能多地保存用户数据,因为退出或终止通知可能随时到达。
停止时保存当前状态,尽可能详细地保存,以便人们在再次启动应用程序时不会丢失上下文。例如,如果您的应用显示滚动数据,请保存当前滚动位置。”
删除任何退出应用程序的机制是合适的。
“隐藏”退出可以理解为用户崩溃,不是吗?