像FaceBook一样滚动UITableView

时间:2013-01-03 09:50:26

标签: iphone ios

如果你看一下iOS的Facebook“App”,滚动UITableView的速度非常快。看起来应用程序正在将数据呈现在不同线程中的单元格中(而不是在主线程中)。

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

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

感谢您的回复

1 个答案:

答案 0 :(得分:1)

假设您有每个UITableViewCell的以下任务

  1. 来自服务的GetData
  2. 从服务中获取图片
  3. 调整图片大小以匹配容器尺寸(如果您获得的图片很大,则应该这样做)
  4. 显示您的数据
  5. 你应该在背景中执行1,2,3

    但你必须在主线程中执行4。

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

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

    使用 GRAND CENTRAL DISPATCH (GCD)

    阅读GCD。

    如果您想快速解决方法,请点击此处

    好。任务4有两件事要做。

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

    我正在服用 1 4(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
       });
    }