Iphone iOS图像视图性能增强建议

Iphone iOS图像视图性能增强建议,iphone,objective-c,ios,ipad,Iphone,Objective C,Ios,Ipad,我的应用程序截图。我有一个带有滚动视图的主屏幕,可以让你循环浏览这些快照。问题是,快照越多,视图运行越慢。在事情变得严重滞后之前,我可以在scrollview中获得大约15个快照。我显示的图像只有实际屏幕截图的1/3大小。每个屏幕截图都是滚动视图上的UIImageView。关于提高性能有什么想法吗?您可以做的最好的事情就是延迟加载。 仅加载当时在该视图上可见的图像。 一旦您滚动,旧图像将被释放,新图像将被加载 加载图像的两种方法: [UIImage ImageName:fullFileName]

我的应用程序截图。我有一个带有滚动视图的主屏幕,可以让你循环浏览这些快照。问题是,快照越多,视图运行越慢。在事情变得严重滞后之前,我可以在scrollview中获得大约15个快照。我显示的图像只有实际屏幕截图的1/3大小。每个屏幕截图都是滚动视图上的UIImageView。关于提高性能有什么想法吗?

您可以做的最好的事情就是延迟加载。 仅加载当时在该视图上可见的图像。 一旦您滚动,旧图像将被释放,新图像将被加载

加载图像的两种方法:

[UIImage ImageName:fullFileName]//缓存图像
或:

或者,最后:

[UIImage imageWithContentsOfFile:path]//不缓存图像
哪种解决方案最好取决于您对图像所做的操作。
imageNamed:
方法确实缓存了图像,但在许多情况下,这将有助于内存的使用。例如,如果将图像加载10次以在表视图中与某些文本一起显示,
UIImage
将仅在内存中保留该图像的一个表示形式,而不是分配10个单独的对象。另一方面,如果您有一个非常大的图像,并且您没有在使用它,那么您可能希望从数据对象加载该图像,以确保在完成后将其从内存中删除


如果您没有任何大型图像,我不会担心缓存,只要您使用延迟加载。除非您看到问题,否则我会选择更少的代码行,而不是微不足道的内存改进。

您可以做的最好的事情是延迟加载。 仅加载当时在该视图上可见的图像。 一旦您滚动,旧图像将被释放,新图像将被加载

加载图像的两种方法:

[UIImage ImageName:fullFileName]//缓存图像
或:

或者,最后:

[UIImage imageWithContentsOfFile:path]//不缓存图像
哪种解决方案最好取决于您对图像所做的操作。
imageNamed:
方法确实缓存了图像,但在许多情况下,这将有助于内存的使用。例如,如果将图像加载10次以在表视图中与某些文本一起显示,
UIImage
将仅在内存中保留该图像的一个表示形式,而不是分配10个单独的对象。另一方面,如果您有一个非常大的图像,并且您没有在使用它,那么您可能希望从数据对象加载该图像,以确保在完成后将其从内存中删除


如果您没有任何大型图像,我不会担心缓存,只要您使用延迟加载。除非您看到问题,否则我会选择更少的代码行,而不是微不足道的内存改进。

一次需要显示多少图像?此外,当您说“每个屏幕截图都是滚动视图上的
UIImageView
”时,您的意思是每个
UIImageView
都放在单个滚动视图中,还是每个图像视图嵌套在自己的滚动视图中,然后再放在单个外部滚动视图中?您需要一次显示多少图像?另外,当您说“每个屏幕截图都是滚动视图上的
UIImageView
”时,您的意思是每个
UIImageView
都放在单个滚动视图中,还是每个图像视图嵌套在自己的滚动视图中,然后再放在单个外部滚动视图中?
NSString *fileLocation = [[NSBundle mainBundle] pathForResource:fileName ofType:extension];
NSData *imageData = [NSData dataWithContentsOfFile:fileLocation];
[UIImage imageWithData:imageData];