在 uitableview 中一秒后加载数据。消除这种延迟的任何替代方法

Loading data after one second in uitableview. Any alternate way to eliminate this delay

   NSURL *url=[NSURL URLWithString:string];
    dispatch_queue_t backgroundQueue = dispatch_queue_create("com.example.workQueue", DISPATCH_QUEUE_SERIAL);    
    dispatch_async(backgroundQueue, ^{
        NSData *data=[NSData dataWithContentsOfURL:url];
        NSDictionary *json=[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
        NSLog(@"%@",json);
        marray=[NSMutableArray array];
        for (NSDictionary *dict in json) {

        }
        dispatch_async(dispatch_get_main_queue(), ^{  
            [self.tableView reloadData];
        });
    });

这是处理数据并在 Objective C 中重新加载 table 的正确方法吗?如果是,那么我仍然看到在 tableview 上看到数据有些延迟。有什么办法可以消除这种延迟吗?顺便说一句,这是我故事板中的第二个屏幕。

你做得很好。 在后台线程上下载数据并将其交给table视图,在主线程中重新加载数据就是您需要做的。几乎可以肯定是您自己在向 table 提供数据时的延迟(网络延迟和解析时间),而不是 UITabvleView 在处理您的 reloadData 调用时的延迟。

执行此操作时应遵循的一些一般规则:

  1. 进行服务器调用时在屏幕上显示加载叠加层。
  2. 返回数据后,将其传递给主线程上的 table 视图。立即移除加载叠加层。
  3. 不要在 cellForRowAtIndexPath: 方法中做重物。

作为旁注,虽然是同样的事情,但如果您遵循上述所有准则,请尝试使用下面的方法。

[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];