【问题标题】:Slow performance Json Images Resolution性能缓慢的 Json 图像分辨率
【发布时间】:2015-05-18 22:38:13
【问题描述】:

我的 iphone 应用程序使用一些图像作为完整背景。它已经从 JSon 下载图像并在我运行应用程序时显示它们。我使用了这段代码:

dispatch_async(dispatch_get_global_queue(0,0), ^{
        NSData *imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString: newIndex[@"imageInside1"]]];
        dispatch_async(dispatch_get_main_queue(), ^{
            cell.thumbImage.image = [UIImage imageWithData:imageData];
        });
    });

但是当我运行应用程序时,显示图像需要很长时间。我认为是因为图像的分辨率(当它从互联网下载并显示到应用程序中时)。它们都是 1242x2208.jpg(与 iPhone 6 Plus 尺寸相同),因为我想保证所有尺寸背景的正确分辨率。我在做正确的程序吗?有没有其他方法可以让它更快?是否有必要将它们设置为 1242x2208 大小?对于我的情况来说,jpg 是更快的文件类型?

我的应用是一个包含不同项目的表格视图。当用户单击其中一个单元格时,它必须显示三个完整尺寸的背景图像,位于页面 ViewController 和页面控件(如教程 ViewControllers)内。我不知道为什么,但第一张图片从未出现过。我必须滑动页面控件以显示第二个,然后返回到第一个。在这第二次机会中,第一张图片出现了。

感谢您的帮助¡

【问题讨论】:

  • 这跟 JSON 有什么关系???
  • 图片是从 {"imageInside1":"www.example.com/img.jpg"} 下载的,上面的代码。我不知道这是否是正确的方法。不知道为什么太慢了……是不是跟Json有关?
  • 与 JSON 无关——这只是信息的结构化方式。 XML 将有<tag>info</tag>,在 JSON 中相同的是{"tag":"info"}(基本上)。它与下载图像需要多长时间几乎没有关系。

标签: ios objective-c iphone json uiimage


【解决方案1】:

因为您是异步分配 UIImageView,所以所有 UI 更改必须在主线程上同步发生才能正常执行,将您的第二个异步方法更改为纯同步,它应该可以工作

    dispatch_sync(dispatch_get_main_queue(), ^{
        cell.thumbImage.image = [UIImage imageWithData:imageData];
    });

但除了拥有更快的互联网连接之外,您无法真正加快图像的下载速度

【讨论】:

  • 感谢@Fonix 的回答。我试过你的建议,很遗憾,它不起作用。还是很慢你有其他想法让它更快吗?
  • 要么使图像更小,以便下载更快,要么获得更快的互联网连接,呵呵,恐怕你无能为力。如果您事先知道图像将是什么,也许在您真正需要它们之前就开始下载它们?
猜你喜欢
  • 1970-01-01
  • 2014-11-20
  • 1970-01-01
  • 2017-08-23
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多