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