我有一张表每两秒刷一次。 它在模拟器和我的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
答案 0 :(得分:2)
您不得在主队列上执行网络操作。您可以创建NSOperationQueue以将网络逻辑移动到后台队列,并仅在网络操作结束时在主队列中执行UI更新。
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
queue.name = @"Data request queue";
[queue addOperationWithBlock:^{
[self getColumnData];
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[homeTable reloadData];
}];
}];