代码之家  ›  专栏  ›  技术社区  ›  Steve Weller

使用CATiledlayer时是否在多个线程上调用drawRect:?

  •  4
  • Steve Weller  · 技术社区  · 15 年前

    我知道 drawLayer: drawlayer:inContext: 在使用 CATiledlayer drawRect:

    苹果的PhotoScroller示例代码使用 图纸: 它没有处理线程的特殊代码。

    我想确定我的模型是否适合 CATiledLayer 必须是线程安全的。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Matt Long    15 年前

    你看到这个了吗 technical Q&A from Apple ?

    它不能直接回答您的问题,但它可以帮助您决定如何实现您的模型。

        2
  •  2
  •   Abhi Beckert    13 年前

    我找到了 CATiledLayer 在iOS模拟器中使用多个后台线程,但在我的iPhone上使用单个后台线程。

    我的Mac有一个双核处理器,而我的iPhone有一个单核(A4)。

    我怀疑带有A5 CPU的iOS设备也会使用多线程。

        3
  •  2
  •   persiflage    9 年前

    是的,drawRect可以并且将在多个线程上调用(在OS4.2上测试)。

    另一种选择是使您的模型线程安全。

    如果线程安全是通过一次将对数据模型的大部分访问同步到一个绘图线程来实现的,那么您也可以使用@syncrhonize(self)之类的东西来对drawRect的主体进行互斥,这似乎是可行的。