将图像的这种分配导致内存泄漏?(Would such assignment of image cau

2019-09-30 03:42发布

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

我分配一个新UIImage到的图像特性UIImageView对象。 我不知道是否会导致内存泄漏?

Answer 1:

不,它不应该。 旧的图像应该当你设置新的,而“imageNamed”方法使用自动释放自动释放,所以你应该确定在那里。



Answer 2:

哎考虑imageNamed有严重的内存问题,你在它的缓存失去控制 - 即:一旦你与你的形象做,你不能收回内存。 一个快速谷歌搜索将让你知道有多少人面临的问题与imageNamed

我在苹果iPhone技术讲座和小伙子给予介绍证实了相同的该死的东西 - 他建议使用imageWithContentsOfFile代替imageNamed

如果你只是有几个小图像,其精细否则使用imageWithContentsOfFile即使它有点慢-和实现自己的高速缓存逻辑-检查怎么做的这个伟大的链接在这里



Answer 3:

这取决于如何image属性被定义。 如果它被定义为retain或,我想,即使是copy ,它应该是罚款。 你最终会尝试引用解除分配内存,如果它定义为崩溃您的程序assign



Answer 4:

一般不会,但是这将取决于你如何定义landscape.image。 看帖子的上方。 小心使用了大量的这些:

[UIImage imageNamed:@"tenerife1.png"];

由于对这些图像填​​满记忆,没有得到释放的趋势。



文章来源: Would such assignment of image cause a memory leak?