【问题标题】:Is it ok to use exit(0) in "applicationDidEnterBackground:(UIApplication *)application"?可以在“applicationDidEnterBackground:(UIApplication *)application”中使用 exit(0) 吗?
【发布时间】:2010-07-29 11:36:55
【问题描述】:

升级到 sdk 4 后我的应用在退出时崩溃,错误是内存访问错误。

我想如果我把“exit(0)”放在“applicationDidEnterBackground:(UIApplication *)application”中,应用程序会正常退出。

但是,这样可以吗?到目前为止,这是我对该问题的唯一“解决方案”。

这次 NSZombie 帮不上什么忙……

【问题讨论】:

    标签: iphone ios4


    【解决方案1】:

    如果存在错误的内存访问问题,我认为最好的解决方案应该是找到并修复内存问题。

    但是,如果你想坚持“防止进入后台”的方式,你应该使用适当的方法:禁用多任务处理。它被描述为here

    如果您不希望应用程序在退出时保留在后台,您可以通过将 UIApplicationExitsOnSuspend 键添加到应用程序的 Info.plist 文件并将其值设置为 YES 来明确选择退出后台执行模型

    【讨论】:

    • 大卫是对的,你不应该那样做。 Apple 人机界面指南会告诉你这是错误的。
    • 同意。不要治标不治本,要找到问题的根源。
    • 我找到了问题的根源。问题是我需要执行影响主线程上的界面或视图的所有任务。弄清楚这一点也解决了许多其他给我带来麻烦的错误。看来 iOS 4 对线程使用的限制更大
    【解决方案2】:

    不要将 exit(0) 放在 applicationDidEnterBackground:(UIApplication *)application.

    相反,在 Info.plist 文件中添加一个键来标记您希望应用程序在暂停时退出。详情请看Property List Options

    【讨论】:

    • 这很奇怪,我尝试添加属性,但它似乎没有做任何事情......函数 applicationDidEnterBackground 仍在被调用,我仍然收到错误......也许我错过了一些东西。
    【解决方案3】:

    我找到了问题的根源。问题是我需要执行影响主线程上的界面或视图的所有任务。弄清楚这一点也解决了许多其他给我带来麻烦的错误。看来 iOS 4 对线程使用的限制更多

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-07
      • 1970-01-01
      • 2018-01-03
      • 2017-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多