gpt4 book ai didi

ios - 删除 subview (ARC)后内存未释放

转载 作者:行者123 更新时间:2023-11-29 02:47:15 25 4
gpt4 key购买 nike

我正在尝试解决“收到内存警告”问题。

我的应用程序有 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com