慢速网络 - DidSelectRowAtIndexPath延迟

时间:2013-08-29 16:07:19

标签: ios performance uitableview didselectrowatindexpath

我有一张表每两秒刷一次。 它在模拟器和我的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];

我的updateMethod是:

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

}

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

1 个答案:

答案 0 :(得分:2)

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

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

[queue addOperationWithBlock:^{
   [self getColumnData];
   [[NSOperationQueue mainQueue] addOperationWithBlock:^{
        [homeTable reloadData];
    }];
 }];