为什么当我在 Xcode中测试我的 Controller 时一切都很好,但是没有调用deinit
方法。这是正确的吗?
虽然应用正常运行,但可以,但不适用于UITest
目标。
对于复杂的结构,模拟器会反复分配更多的对象,并且...根本不要取消分配它。因此,通常在速度较慢的计算机上,应用有时会无缘无故地退出...并且无法完成测试。
使用Xcode 8,iOS 10,macOS Sierra。
最佳答案
在没有看到测试代码示例的情况下,我无法确定地回答您的问题,但是,您的情况使我对几件事感到怀疑。
基本上发生的事情是该应用程序正在为您运行的每个测试创建新的流程。代码内部某处的内存泄漏将是第一个要研究的问题。如果您正在泄漏内存,那么测试框架中的一系列进程可能会崩溃,从而导致崩溃,并使该问题在正常运行期间在雷达下飞舞。
另外,除非您通过测试类中的拆卸函数显式地取消初始化 Controller ,否则通常只会在测试结束时终止该过程。如果您要测试重新初始化,建议您在测试中显式触发一次拆解,以测试您的内存分配行为。此外,您可能在这里可以使用Xcode Analyze功能。
如果您可以发布测试代码示例,那将是一个很大的帮助,我将相应地编辑我的答案。
关于ios - UITests : deinit is not called,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32296701/