8

为什么当我在Xcode中测试我的控制器时,一切都很好,但deinit没有调用方法。这是对的吗?

虽然应用程序正常工作,但它很好,但不适用于UITest目标。

对于复杂的结构,模拟器会一遍又一遍地分配更多的对象,并且......根本不要释放它。因此,通常在较慢的机器上,应用程序有时会无缘无故退出......并且无法完成测试。

使用 Xcode 8、iOS 10、macOS Sierra。

4

2 回答 2

0

如果没有看到测试代码示例,我无法明确回答您的问题,但是,您的情况让我对几件事产生了怀疑。

基本上正在发生的事情是应用程序正在为您运行的每个测试创建新进程。代码内部某处的内存泄漏将是第一个要调查的问题。如果您正在泄漏内存,则测试框架启动一堆进程可能会导致崩溃,并允许该问题在正常运行期间在雷达下飞行。

此外,除非您通过测试类中的拆卸功能显式取消初始化控制器,否则该过程通常会在测试结束时被终止。如果您想测试您的重新初始化,我建议在测试中明确触发拆解以测试您的内存分配行为。此外,这里的 Xcode 分析功能可能对您有用。

如果您可以发布一个测试代码示例,这将是一个很大的帮助,我会相应地编辑我的答案。

于 2016-10-18T01:20:29.987 回答
0

确保 deinit 不为空。如果它为空,那么它将永远不会工作。放置任何你需要释放的东西并检查它是否工作。

我的建议

 better to use dealloc method rather than using deinit.
于 2016-10-19T04:45:55.753 回答