【问题标题】:UIImageView and UIImage: How can I tweak the most performance out of them?UIImageView 和 UIImage:如何调整它们的最大性能?
【发布时间】:2010-10-25 01:27:53
【问题描述】:

首先:我已经实现了一个相当复杂的图像滚动机制,它允许在一个滚动视图中滚动几十万(理论上)。这是通过在滚动时预加载小部分来完成的,同时重新使用所有 UIImageView。目前我所做的只是将新创建的 UIImage 对象分配给那些重复使用的 UIImageViews。

如果可以通过将新的图像数据传递给它们来重用这些 UIImage 对象,那可能会更好。

现在的问题是,我目前正在使用 -imageNamed: 方法。文档说,它缓存了图像。

我在这种情况下看到的问题是 -i​​mageNamed: 随着图像滚动超出预加载范围,不再需要它。如果它在用户滚动、滚动和滚动时尝试缓存数千张图像,那就太糟糕了。 如果我能找到一种方法将新的图像数据填充到 UIImage 对象中以供重复使用,那么缓存的旧图像会发生什么?

所以剩下一种方法,看起来很有趣: -initWithContentsOfFile:

这不会缓存图像。而且它不使用-autorelease,这在这种情况下很好。

您认为在这种情况下使用 -initWithContentsOfFile: 会更好吗?

【问题讨论】:

    标签: iphone cocoa-touch performance uikit


    【解决方案1】:

    只有基准测试才能确定地告诉您。我倾向于认为UIImage 图像缓存可能非常高效,因为它几乎在操作系统中的任何地方都使用过。也就是说,根据您显示的图像数量,您的方法可能会有所帮助。

    【讨论】:

      【解决方案2】:

      我会说是的。您有太多图像无法将所有图像都保存在缓存中,因此您无法使用 -imageNamed:。如果您的图像没有多次显示,则不会降低性能。

      【讨论】:

        【解决方案3】:

        我找到了一个关于 imageNamed 方法 http://www.alexcurylo.com/blog/2009/01/13/imagenamed-is-evil/ 的 cmets 的链接

        【讨论】:

          猜你喜欢
          • 2011-09-16
          • 1970-01-01
          • 2013-01-16
          • 2013-06-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-28
          • 2014-12-24
          相关资源
          最近更新 更多