如何正确停止当前运行的 xCode 项目?

Posted

技术标签:

【中文标题】如何正确停止当前运行的 xCode 项目?【英文标题】:How to properly stop an xCode project currently running? 【发布时间】:2013-04-02 16:02:06 【问题描述】:

这听起来像是一个愚蠢的问题,但是随着 ios 6 viewDidUnload 不再被调用,我对如何正确终止当前正在开发设备上使用 xCode 调试的 iOS 应用程序很感兴趣。点击下方的停止按钮够吗?

当我点击那个按钮时究竟会发生什么?这是否相当于向应用发送停止信号,立即终止应用? 是否调用了任何 dealloc 代码? 我问的原因是,在使用 start/stop 反复调试后,我遇到了一个问题,我的应用似乎有随机内存问题(通过分析未检测到泄漏)。

感谢您的想法!

【问题讨论】:

【参考方案1】:

点击停止会立即终止应用。没有调用 dealloc 或其他代码(特别是没有可能保存数据的应用程序委托方法),该过程刚刚终止。然后释放该进程使用的所有内存,当您重新开始时,您将从头开始。

这不太可能是“随机内存”问题的原因。如果您可以提供有关您正在经历的症状的更多详细信息,那么可能还有更多要说的。

模拟用户可能执行的操作的最佳方法是点击主页按钮,然后停止该过程。这不会终止您的应用程序,但无论如何您应该在进入后台时处理所有必要的事情。

【讨论】:

这里描述了问题。 ***.com/questions/15673536/… 你所说的关于内存的内容让我觉得这也可能被核心数据中的某些东西调用,试图在突然终止后自行修复(我正在使用 RestKit) 根据我的经验,Core Data 在会话之间非常棘手。如果您向表中添加行或对象,通常需要删除模拟器上的应用程序或从应用程序栏中执行 iOS 模拟器 > 重置内容和设置。 设置时遇到错误可以直接删除持久化存储。节省大量时间,并且可能是您在生产代码中想要的。【参考方案2】:

ApplicationWillTerminate 在应用程序正确终止后被调用。如果单击停止按钮,您的应用程序将被终止,并且在这种情况下您可能不会跟踪任何方法调用。由于UIViewController 没有viewDidUnloaddealloc 方法,但是您可以定义自己的dealloc 方法,而无需调用超级dealloc

您可以查看Application life Cycle。它可能会回答很多问题。

【讨论】:

以上是关于如何正确停止当前运行的 xCode 项目?的主要内容,如果未能解决你的问题,请参考以下文章

腾讯一面:如何正确停止一个线程?

如何正确停止线程

myeclipse如何停止当前的tomcat服务?

如何让 Xcode 在测试代码出现异常时停止?

Xcode突然停止在硬件上运行项目:“无法启动xxx.app:..没有这样的文件..” [关闭]

如何从 XCode 中的 DerivedData 下的模块文件中停止“签名不匹配”错误?