我正在尝试解决“收到内存警告”问题。
我的应用程序有 2 个 View Controller ,当您单击第一个 View Controller 上的按钮时, 细节 View Controller 出现。 详细 View Controller 有一个继承自 UIView 的 View ,称为“topView”,该 View 有许多 subview 。 subview 也继承了 UIView,每个 subview 有 2 个 UILabel。
我的问题是,当您通过单击后退按钮返回到第一个 View Controller 时, 即使我将以下代码放入 viewDidDisappear,“topView”也不会被释放。
如何释放topView的内存?
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
[[self.topView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
self.topView= nil;
}
我错过了什么吗? 我想我正朝着错误的方向前进,所以请给我建议。
最佳答案
我不确定,但这里有一个想法。当您调用此线路时:
[[self.topView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
它删除所有将 self.topView 声明为 super View 的 subview 。下一行:
self.topView = nil
不会删除顶 View 本身,而是 nil 是指向它的指针。由于 View 由其 super View 保留,因此该对象将保留在内存中,直到 View Controller 被删除并释放其 View 为止。
关于ios - 删除 subview (ARC)后内存未释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24971354/