Iphone 这样的映像分配会导致内存泄漏吗?

Iphone 这样的映像分配会导致内存泄漏吗?,iphone,memory,memory-management,memory-leaks,Iphone,Memory,Memory Management,Memory Leaks,我将一个新的UIImage分配给UIImageView对象的image属性。我不确定这是否会导致内存泄漏?不,不应该。设置新图像时,旧图像应自动释放,“imageNamed”方法使用autorelease,因此您在那里应该没有问题。不,不应该。设置新图像时,应自动释放旧图像,“imageNamed”方法使用autorelease,因此您在那里应该没有问题。这取决于图像属性的定义方式。如果它被定义为retain,或者,我想,甚至copy,它应该可以。如果程序被定义为assign,那么您将尝试引用释

我将一个新的
UIImage
分配给
UIImageView
对象的image属性。我不确定这是否会导致内存泄漏?

不,不应该。设置新图像时,旧图像应自动释放,“imageNamed”方法使用autorelease,因此您在那里应该没有问题。

不,不应该。设置新图像时,应自动释放旧图像,“imageNamed”方法使用autorelease,因此您在那里应该没有问题。

这取决于
图像
属性的定义方式。如果它被定义为
retain
,或者,我想,甚至
copy
,它应该可以。如果程序被定义为
assign
,那么您将尝试引用释放的内存并导致程序崩溃。这取决于
image
属性的定义方式。如果它被定义为
retain
,或者,我想,甚至
copy
,它应该可以。如果程序被定义为
assign

通常情况下不是这样,但这取决于您如何定义scape.image,那么您将尝试引用释放的内存并导致程序崩溃。见上面的帖子。使用这些产品时要小心:

- (void)viewDidLoad {
    [super viewDidLoad];
    landscape.image = [UIImage imageNamed:@"tenerife1.png"];
}

因为有一种趋势,这些图像会填满内存,而不会被释放。

通常不是这样,但这取决于您如何定义scape.image。见上面的帖子。使用这些产品时要小心:

- (void)viewDidLoad {
    [super viewDidLoad];
    landscape.image = [UIImage imageNamed:@"tenerife1.png"];
}

由于这些图像往往会填满内存,而不会被释放。

请注意,imageNamed存在严重的内存问题,因为您失去了对其缓存的控制-即:一旦处理完图像,您就无法回收该内存。快速的谷歌搜索会让你知道有多少人在ImageName上遇到了问题

我参加了苹果iphone技术讲座,做演示的家伙证实了同样的事情——他建议使用imageWithContentsOfFile而不是imageNamed


如果您只有两个小图像,则可以使用imageWithContentsOfFile,尽管它的速度稍慢—并实现您自己的缓存逻辑—检查此伟大的链接,了解如何执行此操作

嘿,考虑到imageNamed在您失去对其缓存的控制时存在严重的内存问题—即:一旦处理完图像,你不能回收那个内存。快速的谷歌搜索会让你知道有多少人在ImageName上遇到了问题

我参加了苹果iphone技术讲座,做演示的家伙证实了同样的事情——他建议使用imageWithContentsOfFile而不是imageNamed


如果您只有两个小图像,那么使用imageWithContentsOfFile就可以了,尽管它稍微慢一点-并实现您自己的缓存逻辑-查看此伟大的链接,了解如何使用它

我应该使用什么来代替它?我应该使用什么来代替它?