安全的方式来渲染UIVIew后台线程上的图像?

我创build的小瓷砖图像存储在磁盘上并显示给用户。 这是我现在这样做的过程:

  1. 创build一个代表我想在屏幕上显示的用户界面的视图控制器
  2. 从视图控制器获取视图并从中呈现图像
  3. 将其保存到磁盘并稍后在屏幕上显示

当我尝试访问viewcontroller的视图时,我崩溃。 当我试图在网上进行研究的时候,在后台创build视图是否安全,我得到了相互矛盾的结果。 我读的UIGraphicsGetCurrentContext调用应该是线程安全的,但也许不访问后台线程上的UIView? 我正在为iOS 4及以上版本编写应用程序。 这里是我使用的代码(平铺是视图控制器):

CGSize size = CGSizeMake(20.0f, 30.0f); UIGraphicsBeginImageContext(size); [tile.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 

尝试访问图块上的.view属性(EXC_BAD_ACCESS)时发生崩溃。 整个过程是在后台渲染视图以防止lockingUI,因为有大量的图块需要处理。

有没有安全的方法来做到这一点?

我从来没有尝试过你所描述的,我不喜欢成为坏消息的持有者,而是从苹果的文档中拿走。

注意:大多数情况下,UIKit类只能在应用程序的主线程中使用。 对于从UIResponder派生的类或者以任何方式涉及操纵应用程序用户界面的类尤其如此。

当然,他们方便地说“大部分”,所以留下一些回旋余地。