Uiscrollview UIImage ImageName方法

Uiscrollview UIImage ImageName方法,uiscrollview,uiimage,core-graphics,instruments,imagenamed,Uiscrollview,Uiimage,Core Graphics,Instruments,Imagenamed,在我的应用程序中,我将几个图像加载到UIScrollView,并使用核心图形例程突出显示滚动视图的一部分。在例程期间,我使用了CGImageRelease和CGContextRelease来管理内存 当我使用仪器(分配)运行应用程序时,我发现每次滑动scrollView时,内存消耗都会不断增加。这在某种程度上导致应用程序变得非常缓慢 对于加载不同的图像,我使用UIImage ImageName方法,我遇到一些帖子表明这不是一个好主意,因为该方法会导致自动删除图像,从而产生内存问题。我想知道我是否

在我的应用程序中,我将几个图像加载到UIScrollView,并使用核心图形例程突出显示滚动视图的一部分。在例程期间,我使用了CGImageRelease和CGContextRelease来管理内存

当我使用仪器(分配)运行应用程序时,我发现每次滑动scrollView时,内存消耗都会不断增加。这在某种程度上导致应用程序变得非常缓慢

对于加载不同的图像,我使用UIImage ImageName方法,我遇到一些帖子表明这不是一个好主意,因为该方法会导致自动删除图像,从而产生内存问题。我想知道我是否在寻找错误的正确位置。什么地方可以找到这种不寻常的内存消耗

另外,使用仪器的分配,我可以看到内存的增加,是否有可能将代码锁定在这些分配发生的地方

提前感谢您的帮助

最好的 DKV

对于加载不同的图像,我使用UIImage ImageName方法,我遇到一些帖子表明这不是一个好主意,因为该方法会导致自动删除图像,从而产生内存问题

不,这不是问题所在。任何不涉及您调用
alloc
init
[
使用其他内容:
]和
release
的操作都会自动删除图像

问题是,
imageNamed:
在将图像交给您之后,它仍然拥有该图像。从
imageNamed:
获取的每个图像都将保留在该缓存中,并与该名称永久关联。这不仅仅是一种“加载此图像”的方法;这是一种“加载此图像并使其永远保持活力*”的方法

*其中“永远”的意思是“直到我的过程结束”

我想知道我是否在寻找错误的正确位置。什么地方可以找到这种不寻常的内存消耗

在仪器方面。它将准确地告诉您创建的每种对象的数量,以及每种对象占用的内存总量,您可以对该列表进行排序,以确定是什么消耗了内存。然后,您可以深入到每个类和每个对象中,以确定在您需要对象之后,是什么让它们保持活动状态。

请问您如何知道“这是一种‘让对象永远保持活动状态’的方法”?我能得到一份官方的证明或声明吗?@JimWatson:在细节上含糊不清,但确实说它把图像保存在缓存中。更具体的是观察到的行为,可能会发生变化,事实上,这可能在过去的近四年中已经发生了变化:他们可能在记忆压力下实施了驱逐。但是,如果没有文档记录,我不会依赖它。