【问题标题】:iOS: Simulating user quitting appiOS:模拟用户退出应用程序
【发布时间】:2016-04-15 05:42:23
【问题描述】:

我刚刚将持久性数据添加到我的应用程序中,并想用我的 iPhone 对其进行测试。当我退出我的应用程序(双击主页并向上滑动)时,我无法再次打开它(图标冻结)。当我在 Xcode 的 iOS 模拟器上尝试同样的事情时,它也崩溃了。我收到来自我的 AppDelegate 的 SIGTERM 错误。这是用户在测试时退出时应该发生的情况,还是我的数据有问题?有什么方法可以模拟用户退出并重新启动应用程序以确保我的数据仍然存在?

谢谢

【问题讨论】:

  • 当您再次尝试打开应用程序时,您是否仍然在调试器中停止?如果您在调试器中继续(让应用终止)然后尝试再次打开应用会怎样?

标签: ios xcode swift


【解决方案1】:

如果您从 Xcode 运行应用程序,这是正确的行为。但是,一旦您上传/运行应用程序一次,您就可以测试关闭和重新打开它。只需在 Xcode 中停止运行,转到您的手机或模拟器,然后单击应用程序图标即可将其打开。不幸的是,此时您不会有调试器日志,但您可以查看您的数据是否仍然存在。

【讨论】:

  • 或者您可以停止模拟器,从活动应用程序中删除应用程序(强制退出)并重新启动模拟器? (shift + alt + h 用于模拟器中的主页按钮)
【解决方案2】:

这不是当用户退出而 Xcode 调试器附加时应该发生的事情(至少现在不是——这个问题毕竟是几年前的事了)。

如果您在从 Xcode(无论是模拟器还是在物理设备上)运行时强制退出应用程序,它只会停止调试器,您应该能够毫无问题地重新启动它。当您这样启动时,Xcode 调试器将不会附加,但您可以从 Xcode 将调试器附加到现有进程(调试 > 附加到进程)。

注意,如果在 Xcode 中运行,然后您退出 Mac 上的模拟器应用程序(或关闭模拟器的窗口),那么您将在 main.swift 中收到 SIGTERM 错误。但这与用户终止您的应用不同,也无法与用户关闭设备相提并论。

根据您的描述,您的代码中似乎存在一个错误,导致在分离调试器或在终止后重新启动时启动时冻结。

要模拟用户退出和重新启动,您应该能够从设备/模拟器终止应用程序,然后从 Xcode 再次运行它或从设备/模拟器启动它并从 Xcode 附加到进程。

在某些情况下,放入一些调试代码可能会有所帮助,这些代码会在运行时弹出警报/更新一些标签,以指示数据在应用重新启动后正确保存,这样您就不必总是使用 Xcode用于诊断您应用中的问题。

【讨论】:

    猜你喜欢
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 2013-09-05
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多