2

如果您查看适用于 iOS 的 Facebook“应用程序”,则滚动UITableView速度非常快。似乎该应用程序正在将数据呈现到不同线程(而不是主线程)中的单元格中。

我也在开发一个类似的应用程序。但是我的应用滚动速度不好。我正在使用延迟加载图像。即使这样,滚动速度也很差。

是否可以在不同的线程中填充自定义UITableViewCell(不在主线程中)????

谢谢您的回复

4

1 回答 1

1

假设每个 UITableViewCell 都有以下任务

  1. 从服务获取数据
  2. 从服务中获取图像
  3. 调整图像大小以匹配容器大小(如果你得到的图像很大,你应该这样做)
  4. 显示您的数据

你应该在后台执行 1 , 2 , 3

但是您必须并且应该在主线程中执行 4。

不要为每个 tableview 单元格创建一个单独的线程,然后再为任务 1 、 2 、 3 创建一个单独的线程。这真的是在浪费资源。

那么,如何在不为每一件事都创建线程的情况下完成所有这些背景工作。

使用大中央调度(GCD)

在 GCD 上阅读。

如果你想要一个快速的解决方法这里是

出色地。任务 4 有两件事要做。

4(a) 更新表格单元格上的一些文本以获取我们得到的日期。4(b)显示获取和调整大小的图像。

我正在服用
14(a)

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

       1. DO 1 Here
       2. Call a Call Back When your Task is Done
        example
        CallBack(Response);

});


CallBack(Response *)response{

   dispatch_async(dispatch_get_main_queue(), ^{

        Do your 4(a) Here
   });
}
于 2013-03-18T04:42:46.997 回答