我使用一个UIImagePickerController来捕捉静止图像。然后,在将图像的不同副本保存到Core数据存储区之前,我需要做一些处理工作。处理和保存工作在iPhone 4上最多需要4-8秒,所以我尝试将工作分支到后台队列,这样整个应用程序和UI就不会阻塞。
我问题的根源是这个。是否有可能在后台线程中使用UIImage,只要UIImage对象完全受限于该线程?我在苹果的线程安全总结中找到了关于NSImage的以下内容。我假设UIImage会以同样的方式工作。
NSImage限制: 一个线程可以创建一个NSImage对象,绘制到图像缓冲区,然后将它传递给主线程进行绘图。底层图像缓存在所有线程之间共享。有关图像和缓存工作方式的更多信息,请参见Cocoa绘图指南。
有人能证实这一点吗?或者,触摸主线程外部的UIImage对象是完全错误的。如果使用一个受限的UIImage实例是可以的,那么我就引出了另一个问题。UIImagePickerController返回一个线程安全的NSDictionary,但是在该NSDictionary中是一个UIImage对象。将该字典传递给另一个线程,然后使用包含的对象在该线程中安全吗?
如果UIImage在imagePicker信息字典中使用不安全,那么对于如何进行最好的处理有任何建议吗?
我认为我已经解决了实际的核心数据线程问题。但是,为了获取信息,我目前使用NSValueTransformer编写和检索图像数据,以在自定义的NSManagedObject子类中将UIImage转换为NSData。
发布于 2011-03-21 17:40:50
我在后台线程中编写了一些“处理UIImagePickerController后的图像”的代码,就像您一样,没有问题。下面是我成功的步骤。
https://stackoverflow.com/questions/5380953
复制相似问题