Iphone iOS中超长UIScrollView的内存消耗

Iphone iOS中超长UIScrollView的内存消耗,iphone,ios,ipad,Iphone,Ios,Ipad,我的UIScrollView的宽度非常长,它包含数千个UIImageView对象 上述UIScrollView和UIImageView对象是否占用大量内存 当UIImageView对象从可见区域滚动离开时,它会自动释放以释放内存吗 在上述场景中,有什么好的方法来管理内存吗 谢谢 对于第一个问题,是的,它们将消耗大量内存 关于第二个问题,他们不会被释放。 当您将视图添加到滚动视图“addSubView”时,它将向该对象发送保留。因此,对于滚动视图,您还需要从superView中删除该视图。您可以标

我的UIScrollView的宽度非常长,它包含数千个UIImageView对象

上述UIScrollView和UIImageView对象是否占用大量内存

当UIImageView对象从可见区域滚动离开时,它会自动释放以释放内存吗

在上述场景中,有什么好的方法来管理内存吗

谢谢

  • 对于第一个问题,是的,它们将消耗大量内存

  • 关于第二个问题,他们不会被释放。 当您将视图添加到滚动视图“addSubView”时,它将向该对象发送保留。因此,对于滚动视图,您还需要从superView中删除该视图。您可以标记所有图像视图,当图像视图不在屏幕上时,您可以将其从超级视图中删除,以保持低内存使用率


  • 这一点在WWDC 2010会议视频第104次会议-使用滚动视图设计应用程序中得到了最好的解释。你可以在iTunes U中免费找到它

    不,它不会自动删除,你必须自己处理。你可以做的只是填充imageView.image=nil,这将删除图像,当你再次出现在同一屏幕区域时,你需要再次加载它。谢谢,Ravin。如何检查UIImageView对象是否在可见区域之外?UIImageView是否可以观察到自己从屏幕上移开?有什么原因不能成为UITableView吗?谢谢。我还认为UITableView是另一种解决方案。当单元格(包含UITableView对象)不可见时,UITableView是否会自动释放单元格?正如您所说,您的scrollview具有很长的宽度,我认为TableView将是不同的解决方案。是的,您可以使用scrollView的scoll委托方法来完成。您将使用偏移量来了解滚动部分,并使用它计算可见区域。我启用了分页的scrollview,并在其上添加自定义UIView,如“customView”(包含少量按钮和web视图)。滚动scrollview时,将删除先前添加的customView,并再次添加具有不同值的相同customView。但当我来回滚动时,记忆会不断增加。我的代码足够长,因此无法发布。可能的原因是什么?检查是否有参考。最好的调试方法是在视图中添加-(void)dealloc方法,并记录该视图发布的确切时间。谢谢Alex,但我已经确定了问题及其UIWebView,即使将其设置为nil也不会发布。我已经搜索了webview发布问题,但没有有效的解决方案。