我注意到在我的应用程序中,有时当视图或视图控制器被释放时,分配给它们的内存不会释放。这可能是什么原因?

我定义了deinit方法来验证视图和视图控制器是否确实被释放了(调用了deinit)。我之所以说有时候是因为在某些其他情况下,当我删除视图时,内存确实会释放。我注意到的另一件事是,当我添加一个视图时,内存使用率上升,然后删除该视图(称为deinit),内存使用率保持不变,但是后续对该视图的视图添加不会产生影响用法。

该视图是在方法中创建的,并由View.addSubview(UIView)添加。在视图中,有一个调用View.removeFromSuperView()的按钮。

最佳答案

请尝试以下方法:

autoreleasepool {
    View.removeFromSuperView() // not sure why you capitalized View but repeating it here just to match your code.
}


这使iOS有机会释放自动释放对象。他们最终还是会自动释放,就像系统需要更多的内存一样,但这可以让您强制它早日发生。 SO answer对此进行了更详细的说明。

关于ios - UIView和UIViewController被释放,但内存未释放,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49353822/

10-16 07:51