我用imageNamed但是imageNamed会缓存你的图像,但是,使用imageWithContentsOfFile:来避免缓存。如何让这段代码更好?
而使用仪器,我看到,消耗大量的时间。 这怎么可能更好?
我用imageNamed但是imageNamed会缓存你的图像,但是,使用imageWithContentsOfFile:来避免缓存。如何让这段代码更好?
而使用仪器,我看到,消耗大量的时间。 这怎么可能更好?
你可能误会什么仪器分析告诉你的。 4.3%的95%不是很多。这一切都取决于发生了什么。如果您没有经历严重的放缓,请不要进行不必要的优化!
然而,问自己的问题是您是否真的需要一组物理图像数据。它真的需要花时间将图像文件解压缩到它的UIImage数据位图中。 (更不用说你可以用这种方式运行自己的内存。)为什么不存储一串字符串(你的pathForResource
字符串)并且只在需要时才获取图像?
最后,我会指出,我在这里看到一个模式:您正在获取图像13,然后是图像12,然后是图像11,依此类推。所以你手动执行这个操作的代码是非常愚蠢的,因为如果你告诉我索引号,我可以通过算法告诉你什么图像对应于它。
谢谢!!这是在拍摄照片时模拟动画的图像。 – 2013-03-22 12:52:51
可能考虑'animatedImageNamed:duration:' – matt 2013-03-22 15:22:32
你阅读这些文件,把它们解压缩,未压缩的版本分配内存,并将其存储在数组中。你需要所有的人吗?你可以一次加载它们而不是全部?这将减少初始化数组引起的重大打击。
此外,请确保您的图片不会比您实际显示的图片大。如果您只是在较小的区域中加载较大的图像,则需要较长的时间才能加载和解压缩该大图像。
尝试使用[NSBundle mainBundle] pathForResource
来代替:......与此代码:
NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];
比如获得一些映像文件的路径
UIImage *img= [[UIImage alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@\myImage.png",bundleRoot]];
请将实际的代码粘贴为文本,以便我们可以阅读。 – rmaddy 2013-03-21 18:07:54
更不用说,它会显得好像你可以只使用for语句来遍历每个图像并将其添加到数组中。 – Josiah 2013-03-21 18:14:11
改为将资源路径存储在数组中。然后抓住你需要的图像。 – AMayes 2013-03-21 18:17:18