我有一个包含一些非常复杂的绘图逻辑的 View (它是从 GIS 数据绘制的 map View )。在主线程上执行此绘图会锁定 UI 并使应用程序无响应。我想使用例如 NSOperation 将绘图移到后台线程。
构建这个的最佳方式是什么?
我目前正在绘制到一个关闭内存 CGContext,然后将其转换为一个 CGImageRef,我将其发送到 View 以在主线程上进行 blit。不幸的是,这会占用大量内存,而且似乎不再使用 GPU 加速,因为它的速度要慢得多。有什么方法可以直接从后台线程绘制到 View 吗?我知道 UIKit 不是多线程安全的,但也许有某种方法可以在我进行绘图时锁定 View ?
最佳答案
超越 iOS 4.0,drawing is thread safe .您可能需要自己创建一个 CGContext
,但没有理由不能在后台线程上绘制。
也就是说,大多数 UIKit 操作不是。如果您需要执行这些操作,您始终可以在后台线程中进行准备,然后在需要时使用 performOnMainThread
。甚至还有 waitUntilDone
。也就是说,您显然应该使用 NSOperation
和 NSOperationQueue
。
关于ios - 在 iOS 的后台线程中绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7702013/