能够在后台线程中使用UIKit类

时间:2014-05-12 12:30:06

标签: objective-c multithreading uikit

我进行了实验,并且能够在后台线程中实例化UIKit类(在这种情况下为UIImageView)而没有问题。我通过在后台线程上使用UIKit做事来看到应用程序崩溃。在场景后面,在非主线程上处理UIKit时会导致异常的原因是什么?例如,如果我完全远离处理视图层次结构,那么它是否安全?

1 个答案:

答案 0 :(得分:4)

这不安全。有一些记录的任务可以安全地调用后台任务,例如将字符串绘制到图像中,访问UIFont,推送/弹出/使用当前图形上下文。但是,大部分行为未定义或记录为不安全。您永远不知道这些类在后台使用的共享资源(或者它们将在以后的版本中使用)。例如,他们可以使用共享内存池。

根据我的经验,在大多数情况下,如果UIView未添加到任何UIWindow但您仍然不安全,则您不会发现问题。

例如,我认为从nibs加载东西(使用UINib)只能从主线程中完成......任何视图都可以从nib加载子视图。