iOS退出(0)已弃用?

时间:2012-12-12 16:06:23

标签: iphone ios

有人知道iOS应用程序中是否弃用了exit(0)吗?我知道手动终止应用程序并不是一个好的决定,但如果我们在代码中使用它,Apple是否会禁止该应用程序?

3 个答案:

答案 0 :(得分:5)

我有一个被拒绝的应用程序,因为退出方式(通过UIAlertView),当用户点击正确的按钮时执行exit(5)

我收到了:

  

我们发现您的应用包含用于退出应用的UI控件。   这不符合iOS人机界面指南   App Store审核指南要求。

     

请参阅随附的截图/参考资料。

     

iOS人机界面指南指定

     

“当人们按下时,总是准备停止iOS应用程序停止   Home按钮用于打开其他应用程序或使用设备   功能,如手机。特别是,人们不会轻拍   应用程序关闭按钮或从菜单中选择退出。提供一个好的   停止体验,iOS应用程序应该:

     
      
  • 尽快保存用户数据,因为退出或终止通知可以随时到达。

  •   
  • 在停止时以最精细的细节保存当前状态,以便人们在启动时不会丢失上下文   申请再次。例如,如果您的应用显示滚动数据,   保存当前滚动位置。“

  •   
     

删除任何退出机制是合适的   应用

“隐藏”退出可以理解为用户崩溃,不是吗?

答案 1 :(得分:5)

不,您不得在您的应用 应该 被拒绝时致电退出。苹果一再劝阻这一点,并且已知会导致iOS多任务切换的严重错误。您应该让用户自己使用主页按钮。

http://developer.apple.com/library/ios/#qa/qa1561/_index.html

“此外,可能无法保存数据,因为-applicationWillTerminate:如果调用exit,则不会调用类似的UIApplicationDelegate方法。如果在开发或测试期间有必要终止应用程序,则中止函数或断言宏是推荐“。

2012-04-09
更新以更强烈地阻止退出功能,并包括调试的最佳实践。

2008-08-27
讨论在代码中终止iOS应用程序的最佳实践的新文档。

直接来自iOS人机界面指南 http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/MobileHIG/UEBestPractices/UEBestPractices.html#//apple_ref/doc/uid/TP40006556-CH20-SW27

“不要以编程方式退出

永远不要以编程方式退出iOS应用,因为人们倾向于将其解释为崩溃。但是,如果外部环境阻止您的应用按预期运行,则需要告知用户有关情况并说明他们可以采取的措施。根据应用程序故障的严重程度,您有两种选择。

显示描述问题的有吸引力的屏幕并建议更正。屏幕提供反馈,向用户保证您的应用程序没有任何问题。它让用户掌控,让他们决定是否要采取纠正措施并继续使用您的应用程序或按主页按钮并打开其他应用程序

如果只有部分应用功能不可用,请在人们使用此功能时显示屏幕或提醒。仅在人们尝试访问无法正常运行的功能时显示警报。

如有必要,请显示许可协议或免责声明

如果您向iOS应用提供最终用户许可协议(或EULA),App Store会显示该协议,以便人们可以在获取您的应用之前阅读它。

如果可能,请避免要求用户在首次启动您的应用时向您的EULA表明其同意。如果没有显示协议,用户可以毫不拖延地享受您的应用。但是,尽管这是首选的用户体验,但在所有情况下都可能不可行。如果您必须在应用程序中显示许可协议,请以与用户界面协调一致的方式进行,并对用户造成最小的不便。

如果可能,请在您的应用说明或EULA中提供免责声明。然后,用户可以在App Store中查看免责声明,您可以平衡业务需求和用户体验需求。“

答案 2 :(得分:4)

不,Apple不会拒绝您的应用使用exit(0)

你是对的,它不是一个很好的设计选择,但它有时很有用。

正如Larme所提到的,如果使用不当,可能会被视为崩溃,而崩溃将导致您的应用被拒绝。

然而,在applicationDidEnterBackground时(在有条件的基础上)您可能希望强制应用重新开始时,它会非常有用。