ios – UITests:没有叫deinit

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

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

对于复杂的结构,模拟器会一遍又一遍地分配更多的对象,并且……根本不需要解除分配.因此,在较慢的机器上,应用程序通常会在没有任何理由的情况下退出……并且无法完成测试.

使用Xcode 8,iOS 10,macOS Sierra.

解决方法

如果没有看到测试代码的样本,我无法明确地回答你的问题,但是,你的情况让我怀疑几件事情.

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

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

如果您可以发布测试代码的样本,这将是一个很好的帮助,我将相应地编辑我的答案.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...