为什么在尝试添加标题栏附件视图时出现 "titlebarViewController not supported for this window style" 异常

Why i'm getting "titlebarViewController not supported for this window style" exception when trying to add title bar accessory view

我正在尝试在应用中添加标题栏附件视图。对于其中一位 Beta 测试人员,我遇到了异常:

 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'titlebarViewController not supported for this window style' 

异常发生在这一行:

[window addTitlebarAccessoryViewController:vc];

知道是什么原因造成的吗,我能否以某种方式检查代码中的崩溃情况并在发生该情况时禁用添加标题栏附件视图?

在不知道 window 的类型和 OS X 版本的情况下,我无法真正帮助解决异常问题。但是,您可以对异常做出反应。

Apple's documentation for Handling Exception

当 window 不显示标题栏 (NSTitledWindowMask == 0) 时会发生异常。因此,可以按如下方式进行检查:

NSWindow *window = self.view.window;
if ((window.styleMask &  NSTitledWindowMask) == 0){
    // Ignore if no title bar on window
    return;
}

但是我们的代码中还有另一个问题。当应用程序在全屏模式下启动时 self.view.window 返回不同的 window - NSToolbarFullScreenWindow 因为该视图是另一个标题栏附件视图(工具栏)的一部分并且在全屏模式下它有不同的 window parent.