击中断言失败:(NSViewIsCurrentlyBuildingLayerTreeForDisplay()!= currentBuildingLayerTree)

时间:2018-06-27 18:29:48

标签: xcode macos assertion macos-high-sierra

在MacOS X High Sierra 10.13.4和10.13.5上,我开始遇到以下断言并中止:

断言失败:(NSViewIsCurrentlyBuildingLayerTreeForDisplay()!= currentBuildingLayerTree),函数NSViewSetCurrentlyBuildingLayerTreeForDisplay,文件/BuildRoot/Library/Caches/com.apple.xbs/Sources/AppKit/AppKit-1561.40.112/AppKit.subproj/NSView.m, 14485行

断言似乎总是随机出现在以下三行代码之一上:

    dispatch_async(dispatch_get_main_queue(), ^{
        [self.courseWindowController showWindow:self];
        [[self.courseWindowController window] makeKeyAndOrderFront:self];
        [[self.courseWindowController window] setParentWindow:mainWindow];
    });

其他人是否遇到过这种情况,您如何解决?

1 个答案:

答案 0 :(得分:0)

@robmayoff是正确的。我正在从主线程中停止忙碌的微调。您可以设置环境变量CA_ASSERT_MAIN_THREAD_TRANSACTIONS = 1,它将显示给您。

您可以在Xcode->产品菜单->方案子菜单->编辑方案...中设置环境变量。选择“运行”,然后在环境变量部分中,可以设置CA_ASSERT_MAIN_THREAD_TRANSACTIONS。然后在调试器中运行该应用程序,您将发现问题。