2

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

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

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

提前致谢

4

2 回答 2

2

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


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

  • 哪个资源是瓶颈?应该是网络。
  • 你如何加载图像?一次全部?那会很糟糕——在它们准备好时展示它们。
  • 图像的尺寸是多少?我看到一个问题,海报想加载50 MB的图像。那太大了。同样,如果您只需要一个缩略图,那么请确保您从服务器请求缩略图并加载它而不是全尺寸图像。
  • 您是否正在加载甚至不需要显示的内容?等到需要显示它们。
  • 您为网络任务使用了多少线程?对于 CPU?对于 I/O?
  • 您的源图像是否正确“粉碎”?
  • 编写您的程序,使其与您的程序的演示模型一起流动。示例:我有大量图像要显示在表格中,但我确保最大限度地减少资源使用,并确保应用程序很好地支持加载和请求取消。这一切都是通过网络来的,而且速度非常快(它是网络绑定的)。

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

于 2012-10-02T10:49:23.080 回答
0

你需要使用延迟加载来显示图像,因为内容将在图像下载时显示。

使用 使用延迟加载图像的 SDWebImage

于 2012-10-02T09:50:23.027 回答