Ios 从其他线程调用UIKit方法

Ios 从其他线程调用UIKit方法,ios,swift,multithreading,uikit,ios-multithreading,Ios,Swift,Multithreading,Uikit,Ios Multithreading,我有一个必须从非主线程调用的函数。在该线程中,我试图确定状态栏的方向,如下所示: let currentInterfaceOrientation = UIApplication.shared.statusBarOrientation 但我显然收到了这样的运行时警告 UIApplication.statusBarOrientation() must be used from main thread only 我的问题是,如果需要,如何确定次线程上的状态栏方向?使用Dispatch

我有一个必须从非主线程调用的函数。在该线程中,我试图确定状态栏的方向,如下所示:

   let currentInterfaceOrientation = UIApplication.shared.statusBarOrientation
但我显然收到了这样的运行时警告

    UIApplication.statusBarOrientation() must be used from main thread only
我的问题是,如果需要,如何确定次线程上的状态栏方向?使用DispatchQueue.main.sync是正确的方法,但由于可能出现死锁,因此存在风险

   var currentInterfaceOrientation = UIInterfaceOrientation.landscapeLeft

   DispatchQueue.main.sync {
                currentInterfaceOrientation = UIApplication.shared.statusBarOrientation
            }
使用Swift的安全方法是什么

我有一个必须从非主线程调用的函数


将方向作为参数添加到此函数。

问题是有一个函数链,而此函数位于堆栈的顶部,所有这些函数都在辅助线程上调用。能否给出一个小的代码示例?我无法想象不可能注入依赖项。直接访问UIApplication.shared有点代码味道。最简单的解决方案是创建另一个全局对象,从UIApplication.shared.statusBarOrientation中设置方向