Iphone UIImage与多线程

Iphone UIImage与多线程,iphone,multithreading,Iphone,Multithreading,我正在开发一个应用程序,可以从相机中读取图像(帧),对图像进行一些处理,然后在UI中显示结果。来自相机的帧来自另一个线程(即不是主线程)中调用的委托,我在这个线程中执行所有图像处理工作,只需执行performSelectorOnMainThread:当图像完成时 问题是,在处理前后,我将图像转换为内部格式。对于这些转换,我使用CGContext。由于我得到了一些奇怪的EXC_BAD_访问,我开始怀疑在除main之外的任何线程中使用CGContext是否有任何问题 我应该只调用performSel

我正在开发一个应用程序,可以从相机中读取图像(帧),对图像进行一些处理,然后在UI中显示结果。来自相机的帧来自另一个线程(即不是主线程)中调用的委托,我在这个线程中执行所有图像处理工作,只需执行performSelectorOnMainThread:当图像完成时

问题是,在处理前后,我将图像转换为内部格式。对于这些转换,我使用CGContext。由于我得到了一些奇怪的EXC_BAD_访问,我开始怀疑在除main之外的任何线程中使用CGContext是否有任何问题

我应该只调用performSelectorOnMainThread吗:一旦我得到帧(camera API将在另一个线程中调用我的委托)并在主线程上执行所有操作时?或者CGContext可以使用多线程,而bug可能是其他原因


另一个可能导致问题的问题是:UIImage在处理线程中创建,然后在主线程上使用(稍后发布)。这会导致任何与自动恢复池相关的问题吗?

问题在于从内部格式到UIImage的转换,而不是在多线程中,可以在后台线程中使用CGContext。请注意,UIImage中经常使用的一些函数不是线程安全的,例如UIGraphicsBeginImageContext()。

您使用的是哪种CGContext?它是一种位图上下文,使用CGBitmapContextCreate创建。CGContext在后台线程上可以,但正常规则适用。。您编写的代码必须是线程安全的。您使用的是哪种同步方式?UIImage可能是一个更大的问题。我在处理完映像后调用performSelectorOnMainThread,因此我不需要任何同步(它不会同时被两个线程触及),但我不知道引用计数如何与多线程一起工作,也许这就是问题所在。我在performSelectorOnMainThread(在后台线程中)之前执行了一个retain-in,该图像稍后将在主线程中释放,此时它将不再使用。