2017-11-11 110 views
1

一个变种。如果我初始化这样的一个UIWindow:初始化主线程

open lazy var whistleWindow: UIWindow = UIWindow() 

我得到一个运行时的问题:

的UIWindow()必须从主胎面仅

被称为

enter image description here

因此,我试图做这样的事情:

open lazy var whistleWindow: UIWindow = { 

    var window:UIWindow! 

    DispatchQueue.main.sync { 
    window = UIWindow() 
    } 

    return window 
}() 

可悲的是我在运行时获取此错误:

主题1:EXC_BREAKPOINT(代码= 1,子码= 0x10497bba4)

我能做什么呢?

+0

'open lazy var whistleWindow:UIWindow = UIWindow()'编译并运行时没有问题。寻求调试帮助的问题(“为什么这个代码不工作?”)必须包含所需的行为,特定的问题或错误以及在问题本身中重现问题所需的最短代码。没有明确问题陈述的问题对其他读者无益。请参阅:http://stackoverflow.com/help/mcve –

+1

这个变量在哪个类上?你如何创建该类的实例?为什么你要创建一个'UIWindow'? – Paulw11

+0

@ Paulw11我认为你有一点。我必须确定当我实例化课程时,我必须在主线程中完成。我不是为什么他们创建了一个UIWindow,它不是我的代码...它来自https://github.com/hyperoslo/Whisper。 –

回答

0
open lazy var whistleWindow: UIWindow = { 
    DispatchQueue.main.sync { 
     return UIWindow() 
    } 
}()