gpt4 book ai didi

multithreading - 在后台线程上将 UIVIew 渲染为图像的安全方法?

转载 作者:可可西里 更新时间:2023-11-01 03:34:01 27 4
gpt4 key购买 nike

我正在创建要存储在磁盘上并显示给用户的小图 block 图像。这是我目前执行此操作的过程:

  1. 创建一个代表我想在屏幕上显示的 UI 的 View Controller
  2. 从 View Controller 获取 View 并从中渲染图像
  3. 将其保存到磁盘并稍后在屏幕上显示

当我尝试访问 View Controller 的 View 时,我崩溃了。当我试图在线研究这个问题时,关于在后台创建 View 是否安全,我得到了相互矛盾的结果。我读到 UIGraphicsGetCurrentContext 调用应该是线程安全的,但也许不能在后台线程上访问 UIView?我正在为 iOS 4 及更高版本编写应用程序。这是我正在使用的代码(tile 是 View Controller ):

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

尝试访问磁贴上的 .view 属性 (EXC_BAD_ACCESS) 时发生崩溃。重点是将 View 呈现为背景中的图像,以防止锁定 UI,因为有很多图 block 要处理。

有安全的方法吗?

最佳答案

我从未尝试过您描述的内容,我不喜欢成为坏消息的传递者,但摘自 Apple's documentation .

Note: For the most part, UIKit classes should be used only from an application’s main thread. This is particularly true for classes derived from UIResponder or that involve manipulating your application’s user interface in any way.

当然,他们方便地说“大部分”,这样就留下了一些回旋余地。

关于multithreading - 在后台线程上将 UIVIew 渲染为图像的安全方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6348962/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com