我的 NSData dataWithContentsOfURL 有一些性能问题...
NSURL *url = [NSURL URLWithString:Imagepath];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *img=[UIImage imageWithData:data];
[ArrayImages addObject:img];
此代码放置在管理从 NSUrl 连接获取的 JSON 响应的方法中(在调用我的 Web 服务之后)。该方法中的所有代码都已经在后台线程中,将这段代码移出后台线程并不能解决问题。所有检索到的图像都放置在主线程中的 View 中。我可以做些什么来使 dataWithContentsOfURL 更快或者有 dataWithContentsOfURL 的替代方案?
提前致谢
最佳答案
+[NSData dataWithContentsOfURL:]
并不“慢”。如果加载一张图像需要很长时间,则问题出在其他地方。
评估您的问题。对于初学者:
- 哪个资源是瓶颈?可能是网络。
- 如何加载图像?一次全部?那会很糟糕——在它们准备好时展示它们。
- 图像的尺寸是多少?我看到一个 SO 问题,发帖者想要加载 50 MB 图像。那太大了。同样,如果您需要的只是缩略图,那么请确保从服务器请求缩略图并加载该缩略图,而不是完整尺寸的图像。
- 您是否正在加载甚至不需要显示的内容?等到您需要显示它们为止。
- 您使用多少个线程来执行网络任务?对于CPU?用于输入/输出?
- 您的源图像是否已正确“粉碎”?
- 编写您的程序,使其与程序的演示模型一致。示例:我有无数的图像要在表格中显示,但我确保最大限度地减少资源使用,并确保应用程序很好地支持加载和请求取消。这一切都是通过网络传输的,而且速度非常快(它是受网络限制的)。
如果您要从设备存储加载许多图像,则应考虑使用 -[UIImage initWithContentsOfFile:]
来代替,因为您的图像数据不会被缓存,但可以被清除。
关于iphone - NSData dataWithContentsOfURL 慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12688011/