【发布时间】:2010-10-25 01:27:53
【问题描述】:
首先:我已经实现了一个相当复杂的图像滚动机制,它允许在一个滚动视图中滚动几十万(理论上)。这是通过在滚动时预加载小部分来完成的,同时重新使用所有 UIImageView。目前我所做的只是将新创建的 UIImage 对象分配给那些重复使用的 UIImageViews。
如果可以通过将新的图像数据传递给它们来重用这些 UIImage 对象,那可能会更好。
现在的问题是,我目前正在使用 -imageNamed: 方法。文档说,它缓存了图像。
我在这种情况下看到的问题是 -imageNamed: 随着图像滚动超出预加载范围,不再需要它。如果它在用户滚动、滚动和滚动时尝试缓存数千张图像,那就太糟糕了。 如果我能找到一种方法将新的图像数据填充到 UIImage 对象中以供重复使用,那么缓存的旧图像会发生什么?
所以剩下一种方法,看起来很有趣: -initWithContentsOfFile:
这不会缓存图像。而且它不使用-autorelease,这在这种情况下很好。
您认为在这种情况下使用 -initWithContentsOfFile: 会更好吗?
【问题讨论】:
标签: iphone cocoa-touch performance uikit