在做的时候我一直在崩溃:
[NSWindow orderFront:nil]
从我在我的应用中生成的一个主题。使用来自线程的UI元素不可能像GTK +?
编辑: 哦善良刚发现这个: https://stackoverflow.com/a/11900929/1828637
所以显然我不能从另一个线程使用NSWindow,所以objc出来了,是否有可能用CoreFoundation做多线程窗口的东西呢?我必须从线程做,所以我寻找替代方式
答案 0 :(得分:2)
UI交互总是必须在主线程上完成。
您只需在主线程上使用GCD调度有问题的代码:
dispatch_async( dispatch_get_main_queue(), ^(void)
{
[NSWindow orderFront:nil];
});
答案 1 :(得分:2)
您只能使用主线程上的UI元素。
我使用GCD确保所有UI活动都在正确的线程上运行:
dispatch_sync(dispatch_get_main_queue(), ^{
// Do your UI updates!
});
请参阅why:
在Cocoa Touch中,UIApplication即应用程序的实例附加到主线程,因为该线程是由Cocoa Touch的入口点函数UIApplicatioMain()创建的。它设置主事件循环,包括应用程序的运行循环,并开始处理事件。应用程序的主事件循环接收所有UI事件,即触摸,手势等。