如何检查我是否在iPhone中使用dataWithContentsOfURL加载了图像?

时间:2010-09-29 15:02:31

标签: iphone image httpwebrequest

在我的iPhone应用程序中,我使用以下代码加载图像:

UIImage *image = [UIImage imageWithData: [NSData dataWithContentsOfURL:url]];

如何查看是否已加载图片?我的意思是有时它不会给出任何错误,但我有空白空格而不是图像。我想检查它是否已完全加载,如果没有,请再次尝试。

谢谢

1 个答案:

答案 0 :(得分:3)

首先,请注意dataWithContentsOfURL:是一个阻止API,如果在主线程上使用,将导致您的应用挂起直到完成。如果您在慢速连接(例如3G或EDGE)上使用此代码,则在图片加载之前,您的应用似乎没有响应 - 您不希望这样。

您应该考虑以下选项之一:

  • 使用NSURLConnection及其代理方法下载图像数据,创建图像对象并在完成后更新用户界面
  • 使用块来结束对dataWithContentsOfURL:的调用并将其分派到异步队列
  • 在单独的线程上执行此工作(不推荐使用前两个选项,使用较少的代码可以获得相同的效果)。

所有这些都是针对另一个问题的。至于您的实际问题,您可以检查返回的数据对象是否有效。文档声明如果无法创建数据对象,则此方法返回nil。

如果你想知道它失败的原因,你应该使用dataWithContentsOfURL:options:error:并传递一个错误指针,你可以检查它何时失败。

但是,正如我所说,如果您使用NSURLConnection方法,您将能够通过实施connection:didFailWithError:委托方法来检查其失败原因。