gpt4 book ai didi

iphone - UIView和内存管理

转载 作者:行者123 更新时间:2023-12-03 20:25:59 27 4
gpt4 key购买 nike

关于如何在使用包含几个图像(约 500K)的 UIView 时提高内存效率的初学者问题。我想如果我以错误的方式处理这个问题并调用此 View 十到二十次,我的应用程序将会崩溃(因为我泄漏了大约 5-10 MB 的 RAM)。

我有一个 UIView,我以编程方式创建它,如下所示:

myView = [[UIView alloc] initWithFrame:0,0,0,0];

我向这个 View 添加了一些图像,这样它就占用了 500K 的内存。完成此 View 后,我想再次释放内存。所以我编码:

[myView removeFromSuperview];
myView = nil;
[myView release];

这是要走的路吗?我对上次的发布电话特别不确定。如果我将 myView 从我的 super View 中删除并将其设置为 nil ,它是否还没有被释放?

此外,在第一个实例中简单地自动释放 myView 是一个好主意,即

myView = [[[UIView alloc] initWithFrame:0,0,0,0] autorelease];

如果有任何建议和更正,我将不胜感激。

最佳答案

您正在向 nil 发送 release 消息。这些语句的正确顺序是:

[myView removeFromSuperview];
[myView release];

然后可以选择:

myView = nil;

关于为什么设置为nil的讨论:

当您将其添加为 subview 时, super View 会保留您的 View ,然后在您删除它时释放它。你仍然需要松开它。您可以在分配它时使用 autorelease ,但由于您需要保留指向它的指针才能发送 removeFromSuperview ,所以正确的方法是发送 当您使用完该指针后释放(然后将该指针设置为nil)。

关于iphone - UIView和内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5993757/

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