2

这是我得到的错误:

MonoMac.AppKit.AppKitThreadAccessException:AppKit 一致性错误:您正在调用只能从 UI 线程调用的方法。

我想按照苹果文档图 14-1所示布局我的程序。

在此处输入图像描述

以下堆栈溢出问题似乎表明这可以在可可中实现

该文档似乎表明多个 gl 上下文是完全合理的,所以我猜测至少其中一些必须存在于主 UI 线程之外。

我猜这很可能是问题所在。但是,我想确保单独线程中的 nsglcontext 不是隐式危险的,并且在使用多线程 opengl 程序时只需遵循通常的预防措施即可。

任何帮助都会使我的桌子不再被头撞,因此将不胜感激。

4

1 回答 1

2

正如问题中的博客文章链接中所建议的那样,您可以使用以下方法来打开跨线程 ui 检查。

//
// Disable UIKit thread checks for a couple of methods
//
var previous = UIApplication.CheckForIllegalCrossThreadCalls;
UIApplication.CheckForIllegalCrossThreadCall = false;

// Perform some UIKit calls here
foo.Bar = 1;

// Restore
UIApplication.CheckForIllegalCrossThreadCalls = previous;

请注意,如果您做错了事情,这也会隐藏问题,因此请谨慎使用。

于 2013-11-05T18:24:05.567 回答