RSS フィードからデータを読み込んで、タイトルをUITableview. を使用してBlockRSSParser、必要なフィールドをすばやく取得しています-ここ
NSLogデータがいつ受信されたかを追跡するために使用しています。UITableViewがデータを受信してから表示するまでに、約 20 秒かかります。
これが私のコードです:
- (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];
    }];
}
このコードのコメントに注目してください。すぐに実行され、ブログ投稿のタイトルの 1 つが表示されます。
しかし、次の 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 秒後に実行されます。この大幅な遅延の背後にある理由は何ですか? さまざまなサイトのさまざまなフィード URL を使用してみました。それでも同じ出力です。