我进行了实验,并且能够在后台线程中实例化UIKit
类(在这种情况下为UIImageView
)而没有问题。我通过在后台线程上使用UIKit
做事来看到应用程序崩溃。在场景后面,在非主线程上处理UIKit
时会导致异常的原因是什么?例如,如果我完全远离处理视图层次结构,那么它是否安全?
答案 0 :(得分:4)
这不安全。有一些记录的任务可以安全地调用后台任务,例如将字符串绘制到图像中,访问UIFont
,推送/弹出/使用当前图形上下文。但是,大部分行为未定义或记录为不安全。您永远不知道这些类在后台使用的共享资源(或者它们将在以后的版本中使用)。例如,他们可以使用共享内存池。
根据我的经验,在大多数情况下,如果UIView
未添加到任何UIWindow
但您仍然不安全,则您不会发现问题。
例如,我认为从nibs加载东西(使用UINib
)只能从主线程中完成......任何视图都可以从nib加载子视图。