如何在没有缓存的Monotouch中从文件加载UIImage?

时间:2012-05-02 19:32:49

标签: ios uikit xamarin.ios uiimage

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

UIImage.FromFile()UIImage.FromFileUncached()都映射到imageWithContentsOfFile:并且不应该缓存,但是我的经验不同而且我很确定UIImage.FromFile()缓存(来自我在仪器中看到的。

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

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

  • 使用缓存加载UIImage?
  • 加载UIImage而不进行缓存?

1 个答案:

答案 0 :(得分:7)

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

Xamarin关于FromFileUncached的文档解释了为什么要这样做。

  

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

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

添加了新的FromBundle方法,并且为了不破坏API,FromFileFromFileUncached相同。

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

  

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

FromFile[Uncached]不会缓存,FromBundle会缓存。