Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 能够在后台线程中使用UIKit类_Objective C_Multithreading_Uikit - Fatal编程技术网

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

Objective c 能够在后台线程中使用UIKit类,objective-c,multithreading,uikit,Objective C,Multithreading,Uikit,我进行了实验,能够在后台线程中实例化UIKit类(UIImageView)。我见过应用程序在后台线程上使用UIKit执行操作时崩溃。在幕后,在非主线程上处理UIKit时,是什么导致异常?例如,如果我完全不处理视图层次结构,它安全吗?它不安全。有一些记录在案的任务可以安全地调用后台任务,例如,将字符串绘制到图像中,访问UIFont,按下/弹出/使用当前图形上下文。但是,大多数情况下,该行为未定义或记录为不安全行为。您永远不知道这些类在后台使用的是什么共享资源(或者在将来的版本中使用)。例如,他们可

我进行了实验,能够在后台线程中实例化
UIKit
类(
UIImageView
)。我见过应用程序在后台线程上使用
UIKit
执行操作时崩溃。在幕后,在非主线程上处理
UIKit
时,是什么导致异常?例如,如果我完全不处理视图层次结构,它安全吗?

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

根据我的经验,在大多数情况下,如果未将
ui视图
添加到任何
ui窗口
中,您不会看到问题,但它仍然不安全


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

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

根据我的经验,在大多数情况下,如果未将
ui视图
添加到任何
ui窗口
中,您不会看到问题,但它仍然不安全

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