2014-02-19 48 views
2

终止后,我的iPad应用程序出现问题。 我将我的应用程序加载到设备抛出Xcode,并完成它的执行。 当我从Xcode重新启动此应用程序(单击运行按钮)时,一切正常。 但是,如果我尝试从移动设备运行应用程序(点击应用程序ico),我有不好的结果(一些数据文件变得不一致)。从Xcode和设备重启应用程序有什么区别

如果我从应用程序的所有文件保存到Mac应用程序后终止,然后尝试在同一个数据文件这两种方式来启动应用程序......这个问题似乎太...

这是什么之间的不同两种方式来运行应用程序(从Xcode和设备)? 在第一和第二种情况下调用了哪些不同的函数? 感谢您的帮助...

+1

哪种数据文件变得不一致? –

+0

它是数据库文件,我在终止和解密应用程序开始后加密 – irumata

+0

你是如何'完成'在你的应用程序的执行? – Merlevede

回答

-1

如果您在应用程序处于前台时使用Xcode终止应用程序,那么最终可能会出现不一致并且尚未保存的内容。但是,如果您首先为应用程序创建背景并等待很短时间(如10秒),然后从Xcode中终止应用程序,则应该基本上与背景相同,然后在设备上终止应用程序。应用程序中的某些内容可能会在应用程序后台保存/同步,如果在应用程序处于前台时将其从Xcode中删除,则不会发生这种情况。

编辑:

确保当你写,你正在做的原子以及数据文件。这将防止文件只被部分写入,因为它会首先将它写入临时文件,然后在完成写入后将其移动到位。如果你的应用程序在通过这篇文章中途遇害,那么如果这些文件不是以原子方式写入的话,这可能会破坏文件。

+0

为什么投票?这回答了OP的问题。 – Gavin

0

它们的启动方式没有区别,或者....也许。你看,事情是iOS中的应用程序并不真正被用户终止。

当您从XCode启动应用程序时,它会杀死任何正在运行的实例并重新启动它。

当你开始从设备上的应用程序,它只是打开的状态下,应用程序,如果是离开了你使用它(除非它被杀死的内存或资源的原因)

+0

该应用程序也可以被设备上的用户明确杀死。如果你双击主页按钮,它可以让你从那里杀死应用程序。 – Gavin

+0

除了@加文的评论*有一点差异。当你在Xcode中启动它时,它会连接到调试器;) – HAS

+0

@HAS是的,但没有迹象表明调试器导致其数据损坏。 – Gavin

0

我已经解决了这个问题的最后时间!

问题出现在iOs应用程序的生命周期中。 iOS系统中断应用程序启动,如果它需要超过5-10秒(来源:https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

但是!如果我们运行throw XCode,这个中断不会出现...

可能有两种解决方案 1.在启动时对硬任务使用dispatch_async(对我无用,因为启动任务必须先执行) 2.启动后启动所有艰难的任务(可能是在按钮点击后或在控制器加载后) - 我已经使用这个解决方案,一切都变好了!

相关问题