0

这是我的第一个 iOS 应用程序,我正试图找出我在这里做错了什么。我的应用程序会启动并挂起几秒钟,直到它响应。该应用程序将在启动时通过网络并从那里获取图像。然后它从添加了文本的图像构建视图。构建视图的函数相当长,但基本上它是从网络上获取每个对象的图像数据。我使用这些方法:

NSURL *url = [NSURL URLWithString: 
   @"http://mysite.com/images/best_trip_ever.png"];
UIImage *image = [UIImage imageWithData: [NSData dataWithContentsOfURL:url]];

由于它在应用程序启动时发生了数十次,我认为这可能是性能下降的原因之一。

我正在创建的视图是通过向我创建的视图添加子视图来制作的。我从网上获取的图像的每个对象都在发生这种情况。

我也有一个table view,对于每一行,我都使用相同的方法从网络带来的图像中再次在表格视图中显示一个漂亮的行。表格视图中非常明显的一点是,当我向下滚动时,单元格会卡住并且移动不顺畅。

对于每个对象,我将数据存储在一个NSData对象中,并encode/decode使用获取数据并将其写回对象的方法。

我不知道是不是从网络中引入图像让事情变得如此缓慢(在我看来这不应该那么慢。可能需要 7-8 秒!)或者是构建视图的行为从图像。

我不介意在每个图像可用之前显示微调器旋转符号,前提是应用程序会尽快唤醒。

有任何想法吗?

4

2 回答 2

2

您正在应用程序的主线程上从 Internet 访问数据。这总是很糟糕,这就是导致挂起的原因。查看 Apple 的名为 LazyTableImages 的示例项目。它通过在后台加载图像来解决这个确切的问题。

于 2012-10-13T20:13:33.090 回答
2

https://github.com/rs/SDWebImage

这是一个非常有用的异步加载/缓存图像的框架

于 2012-10-13T20:17:27.220 回答