0

我有一个每两秒刷新一次的表。它在模拟器和我的 wifi 上运行良好。但是一旦我切换到蜂窝网络(或任何慢速网络),我就无法可靠地选择行。

有时当我单击一行时,它会在 8 秒后工作。有时从来没有。

我以为我的刷新功能导致了延迟,但我在函数的开头和结尾打印了时间,它只需要 2 毫秒。

有没有人遇到过类似的网速慢的问题?关于可能是什么原因导致挂断的任何提示?

在 viewDidLoad 中调用了我的刷新函数:

//Set timer to call refresh function every two seconds
[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(updateMethod) userInfo:nil repeats:YES];

我的更新方法是:

- (void) updateMethod
{
  [columnArray removeAllObjects];
  [self getColumnData];
  [homeTable reloadData];

}

getColumnData 调用网站并将数据放入 columnArray

4

1 回答 1

2

您不得对主队列执行网络操作。您可以创建一个 NSOperationQueue 将网络逻辑移动到后台队列,并且仅在网络操作结束时在主队列中执行 UI 更新。

NSOperationQueue *queue = [[NSOperationQueue alloc] init];
queue.name = @"Data request queue";

[queue addOperationWithBlock:^{
   [self getColumnData];
   [[NSOperationQueue mainQueue] addOperationWithBlock:^{
        [homeTable reloadData];
    }];
 }];
于 2013-08-29T16:25:30.687 回答