新 NSSearchToolbarItem 的向后兼容性

Dan*_*iel 8 macos cocoa nstoolbar nstoolbaritem

在 macOS 11 中,Apple 引入了一个名为 NSToolbarItem 的新 NSToolbarItem NSSearchToolbarItem,当焦点切换到工具栏项时,它会自动调整大小以适应输入。

在此处输入图片说明 在此处输入图片说明

Apple 在此表示这与旧版本的 macOS 向后兼容:https : //developer.apple.com/wwdc20/10104(11:50 分钟)

但是,NSSearchToolbarItem在 macOS 10.13 (High Sierra) 上使用from interface builder启动我的应用程序时,我的应用程序会因以下应用程序特定信息而崩溃:

*** 由于未捕获的异常“NSInvalidUnarchiveOperationException”而终止应用程序,原因:“*** -[NSKeyedUnarchiver decodeObjectForKey:]:无法为密钥(NS.objects)解码类(NSSearchToolbarItem)的对象;该类可以在源代码或未链接的库中定义,并以 NSException 类型的未捕获异常终止

在 10.15 上启动它可以正常工作。我还没有能够测试 10.14。

Thomas Tempelmann 于 7 月 21 日更新

事实证明,这是旧 Xcode 12 版本的错误,现在已在 Xcode 12.5.1 中修复。

我已经开了一个赏金,因为我有一个看似相关的问题与高塞拉利昂运行时工具栏里面NSSegmentedControls的规格选择不当,但事实证明,这是一个单独的问题(这可以通过手动重置工具栏的固定minSize,并maxSize以控件frame.size)。

因此,解决方案是使用 Xcode 12.5.1 或更高版本。

Iva*_*čin 2

在没有任何代码的情况下添加故事板中的项目可以正常工作,我刚刚测试过。所以你可能在代码中做错了什么。或者是在最新的XCode中修复了。

到目前为止,我发现这仅适用于 Catalina,即使在 Mojave 上也会崩溃。根据 @ThomasTempelmann 的说法,它在 XCode 12.5.1 中更好,但我还没有测试过。