【问题标题】:How to load a UIImage from file without caching in Monotouch?如何从文件加载 UIImage 而不在 Monotouch 中缓存?
【发布时间】:2012-05-02 19:32:48
【问题描述】:

如果我看这里的讨论: http://monotouch.2284126.n4.nabble.com/UIImageView-td4303177.html

UIImage.FromFile()UIImage.FromFileUncached() 都映射到 imageWithContentsOfFile: 并且不应该缓存,但是我的经验是不同的,我很确定 UIImage.FromFile() 缓存(根据我在 Instruments 中看到的) .

此处的文档 (http://docs.xamarin.com/ios/tutorials/Working_with_Images) 指出 UIImage.FromBundle() 会缓存,但 UIImage.FromFile() 不会。这仍然是真的吗?或者,如果图像位于应用程序包中,FromFile() 是否会缓存一些魔法?

有人可以说明正确的方法是什么:

  • 加载带有缓存的 UIImage?
  • 加载 UIImage 而不缓存?

【问题讨论】:

    标签: ios uikit xamarin.ios uiimage


    【解决方案1】:

    UIImage.FromFileUIImage.FromFileUncached 相同。它们都调用相同的imageWithContentsOfFile: 选择器。

    Xamarin 在FromFileUncached 上的文档解释了这样做的原因。

    FromFile 的别名,只是用一个更明确的名称来引起对与 FromBundle 相比此调用的无缓存特性的注意。

    历史上,这个选择器的原始 API 被命名为 FromFileUncached,而旧的 FromFile 方法被映射到 imageNamed: - 但事实证明这是一个错误,因为后来的选择器意味着来自捆绑包。

    添加了一个新的 FromBundle 方法,为了不破坏 API,FromFile 变得与 FromFileUncached 相同。

    我将在FromFileUncached 方法中添加一个[Obsolete] 属性,因为它会使它在IDE 中更加明显,即无需阅读文档。

    有人可以说明正确的方法是什么:

    FromFile[Uncached] 不缓存,FromBundle 有。

    【讨论】:

    • 感谢您澄清这一点,但如果 FromFile() 没有缓存并且此内存用于缓存的图像数据,为什么我会看到“内存标签 70”的巨大增长(正如您对另一个错误的评论) )?
    • 以上是基于文档此方法不缓存图像对象。来自developer.apple.com/library/ios/#documentation/uikit/reference/…但它不会是第一次发现这个不完整/错误:(您能否尝试制作一个小型重现案例并将其附加到错误报告中,以便我们进行调查。谢谢
    • 它似乎也适用于其他人(ObjC)jorambarrez.be/blog/2012/04/19/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    相关资源
    最近更新 更多