gpt4 book ai didi

ios - UIKit 绘图是线程安全的 : how do you get a graphics context?

转载 作者:技术小花猫 更新时间:2023-10-29 11:22:06 24 4
gpt4 key购买 nike

因此,如 this answer 中所述在the iOS 4.0 release notes , UIKit 现在有一些线程安全的绘图工具:

Drawing to a graphics context in UIKit is now thread-safe. Specifically:

  • The routines used to access and manipulate the graphics context can now correctly handle contexts residing on different threads.
  • String and image drawing is now thread-safe.
  • Using color and font objects in multiple threads is now safe to do.

这很好,但是您如何使用它呢?

据我所知,任何时候你不在 -drawRect: 中,如果你已经通过 创建了自己的上下文,你只能使用 UIKit/UIGraphics 的东西来绘制UIGraphicsBeginImageContext()UIGraphicsPushContext(),但根据文档,这些函数不是线程安全的,并且 -drawRect() 始终在主线程上调用.

我认为在主线程上创建一个图像上下文然后启动后台方法将是一个非常糟糕的主意,因为竞争条件很多。

那么,我该如何使用 iOS 4 中引入的这种基于多线程 UIKit 的绘图工具呢?我错过了哪些获取事件 UIKit 图形上下文的其他方法?

附言我知道我可以只使用 Core Graphics 绘图并完成它。由于各种原因(遗留代码),我想继续使用基于 UIKit 的绘图方法。

最佳答案

根据一些尝试经验和各种文档,我认为 UIGraphicsPushContext() 的文档是不正确的。

我相信 UIGraphicsPushContext() 实际上是线程安全的。这是真实的具体迹象是 QA1637 ,它说“从 iOS 4.0 开始,在 UIKit 中绘制图形上下文是线程安全的。这包括访问和操作当前图形堆栈、绘制图像和字符串,以及颜色和字体对象的使用来自辅助线程。” (强调我的)

我承认与文档相矛盾地假设线程安全始终是一个冒险的提议。但我认为这是文档错误。我打开了rdar://11161530跟踪它。请欺骗。

关于ios - UIKit 绘图是线程安全的 : how do you get a graphics context?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9956726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com