使用RSS提要数据的水合表目标C.

时间:2012-01-13 19:24:08

标签: objective-c ios rss

我有一个Objective C应用程序,它使用ASIHTTPRequest从RSS源读取数据,并使用GDataXML对其进行解析。返回的RSS数据有两个,我想在表格中显示。 RSS源中返回的每个项目都有图像URL和描述。我想用一个单元格中的图像填充表格,并在图像右侧的下一个单元格中填写描述。我当前的逻辑是循环从RSS提要返回的每个项目,并使用以下逻辑填充UIImage对象:

UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.example.com/image.png"]]];
cell.image = [UIImage imageWithData: image];

这有效,但似乎运行得很慢。有时应用程序只是在尝试加载图片时冻结。有没有更好的方法来加载表中的图像?如果我忽略图像,表格会快速填充文本数据。

1 个答案:

答案 0 :(得分:1)

UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.example.com/image.png"]]];

在上面的代码行中,NSURL URLWithString:将用于文件系统URL,例如临时目录或plist文件中已下载的图像等。由于您已通过http URL,因此它会生成同步请求阻止你的线程,直到它完成下载图像数据。如果您在主线程上执行此操作,则在下载图像之前,UI不会响应触摸。

将其更改为进行异步调用,即异步下载example.com/image.png。您可以参考ASIHTTPRequest实例方法startAsynchronous,然后将下载的数据传递给UIImage imageWithData:

要了解有关异步网络请求的更多信息,请观看会话208 WWDC 2010 Network Apps for iPhone OS Part-2