我正在从 rss 提要加载数据并在UITableview
. 我正在使用BlockRSSParser
, 来快速获取必填字段 -这里
我NSLog
用来跟踪何时收到数据。收到数据后,大约需要 20 秒才能UITableView
显示数据。
这是我的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
[self setTitle:@"Loading..."];
[MBProgressHUD showHUDAddedTo:self.view animated:YES];
NSURLRequest *req = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://blog.stackoverflow.com/feed/"]];
[RSSParser parseRSSFeedForRequest:req success:^(NSArray *feedItems) {
[self setTitle:@"Blogs"];
[self setDataSource:feedItems];
[self.tableView reloadData];
RSSItem *item = [dataSource objectAtIndex:2];
NSLog(@"loaded cell %@", [item title]);
} failure:^(NSError *error) {
[MBProgressHUD hideHUDForView:self.view animated:YES];
}];
}
注意这段代码中的注释。它可以快速执行并向我显示博客文章的标题之一。
但是在接下来的 20 秒内,在以下方法最终启动之前什么都没有显示:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
[MBProgressHUD hideHUDForView:self.view animated:YES];
RSSItem *item = [dataSource objectAtIndex:indexPath.row];
NSLog(@"loaded cell %@", [item title]);
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:item.title];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:item.title];
}
// Configure the cell...
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
NSString *theTitle = [item title];
cell.textLabel.text = theTitle;
return cell;
}
此代码中的注释在 20 秒后执行。如此大的延迟背后的原因是什么?我尝试过使用来自不同站点的不同提要网址。还是一样的输出。