安全的方式来渲染UIVIew后台线程上的图像?
我创build的小瓷砖图像存储在磁盘上并显示给用户。 这是我现在这样做的过程:
- 创build一个代表我想在屏幕上显示的用户界面的视图控制器
- 从视图控制器获取视图并从中呈现图像
- 将其保存到磁盘并稍后在屏幕上显示
当我尝试访问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派生的类或者以任何方式涉及操纵应用程序用户界面的类尤其如此。
当然,他们方便地说“大部分”,所以留下一些回旋余地。