这是我的第一个iOS应用程序,我想知道我在这里做错了什么。我的应用程序会上升,并会挂起几秒钟,直到它响应。 该应用程序将通过网络,并在启动时从那里带来图像。然后,它使用添加的文本从图像构建视图。构建视图的功能很长,但基本上它是从每个对象的Web中获取图像数据。 我使用这些方法:
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秒!) 或者它是从图像构建视图的行为。
我不介意在每个图像可用之前显示每个图像的微调器旋转符号,只要该应用程序能够尽快唤醒。
有什么想法吗?
答案 0 :(得分:2)
您正在应用的主要主题上访问互联网上的数据。这总是很糟糕,这是导致挂起的原因。看看Apple的示例项目LazyTableImages。它通过在后台加载图像来解决这个确切的问题。
答案 1 :(得分:2)
https://github.com/rs/SDWebImage
这是一个非常有用的框架,可以异步加载/缓存图像