spe*_*tak 1 iphone objective-c ipad ios
我的应用程序截图.我有一个带有滚动视图的主屏幕,可让您循环浏览这些快照.问题是,我拥有的快照越多,视图运行的速度就越慢.在事情严重滞后之前,我可以在scrollview中获得大约15个快照.我正在显示的图像只是实际屏幕截图的1/3.每个屏幕截图都是滚动视图上的UIImageView.有关提高性能的想法吗?
你可以做的最好的事情是做懒加载.仅加载该视图上当时可见的图像.滚动旧图像后,将释放新图像并加载新图像.
两种加载图像的方法:
[UIImage imageNamed:fullFileName] // caches the image
Run Code Online (Sandbox Code Playgroud)
要么:
NSString *fileLocation = [[NSBundle mainBundle] pathForResource:fileName ofType:extension];
NSData *imageData = [NSData dataWithContentsOfFile:fileLocation];
[UIImage imageWithData:imageData];
Run Code Online (Sandbox Code Playgroud)
或者,最后:
[UIImage imageWithContentsOfFile:path] // does not cache the image
Run Code Online (Sandbox Code Playgroud)
哪种解决方案最好取决于您对图像的处理方式.该imageNamed:方法会缓存图像,但在许多情况下,这将有助于内存使用.例如,如果加载图像10次以及在表视图中显示某些文本,UIImage则只会在内存中保留该图像的单个表示,而不是分配10个单独的对象.另一方面,如果您有一个非常大的图像并且您没有重新使用它,您可能希望从数据对象加载图像以确保在完成后从内存中删除它.
如果你没有任何巨大的图像,我不会担心缓存,只要你使用延迟加载.除非你看到一个问题,否则我会选择较少的代码行而不是可忽略不计的内存改进.
| 归档时间: |
|
| 查看次数: |
489 次 |
| 最近记录: |