我对NSData dataWithContentsOfURL有一些性能问题...

NSURL *url = [NSURL URLWithString:Imagepath];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *img=[UIImage imageWithData:data];
[ArrayImages addObject:img];

这段代码放在管理从NSUrl连接(在调用我的Web服务之后)获得的JSON响应的方法中。此方法中的所有代码已经在后台线程中,将这段代码移出后台线程并不能解决问题。所有检索到的图像都放在主线程的视图中。我该怎么做才能使dataWithContentsOfURL更快,或者有替代dataWithContentsOfURL的方法?

提前致谢

最佳答案

+[NSData dataWithContentsOfURL:]不是“慢”的。如果加载一个图像需要很长时间,则问题出在其他地方。

评估您的问题。对于初学者:

  • 瓶颈是哪个资源?可能是网络。
  • 如何加载图像?一次全部?那就不好了-在准备好它们时显示它们。
  • 图片的大小是多少?我看到一个问题,发帖人希望在其中加载 50 MB 图片。那太大了。同样,如果您只需要缩略图,则请确保从服务器请求缩略图并加载该缩略图,而不是全尺寸的图像。
  • 您是否正在加载甚至不需要显示的内容?等待直到需要显示它们。
  • 您用于网络任务的线程数是多少?对于CPU?对于I / O?
  • 您的源图像是否正确“粉碎”了?
  • 编写程序,使其与程序的表示模型一起使用。示例:我有成千上万的图像要显示在表中,但是我确保将资源使用降至最低,并确保该应用程序很好地支持了加载和请求取消。这些都是通过网络来的,而且速度非常快(受网络限制)。

  • 如果要从设备存储中加载许多图像,则应考虑改用-[UIImage initWithContentsOfFile:],因为图像数据不会被缓存,但是可以清除。

    08-27 06:59