UIView的-drawRect:是否必须在主线程上调用?

dub*_*eat 0 iphone uiview ios

是否-drawRect:必须在主线程上绘制UIView的方法,或者CADisplayLink 是否可以-setNeedsDisplay在不同的运行循环中调用自定义视图?

Bra*_*son 10

从iOS 4.0开始,您可以在-drawRect:后台线程的UIView中绘制:

  • 在UIKit中绘制图形上下文现在是线程安全的.特别:
    • 用于访问和操作图形上下文的例程现在可以正确处理驻留在不同线程上的上下文.
    • 字符串和图像绘制现在是线程安全的.
    • 现在可以安全地使用多个线程中的颜色和字体对象.

另请参阅iOS 4.0中关于此问题的技术问答QA A中的评论.

之前的任何版本的iOS仍然需要将此绘图放在主线程上.