Sierra 10.12 上的 NSTextView 检查器栏崩溃

NSTextView inspector bar crash on Sierra 10.12

是否有其他人看到在 NSTextView for Sierra(发布版本)上调用 setUsesInspectorBar 时发生崩溃?此代码在 10.11.5 上运行良好,但在 Sierra 上的 AppKit 中崩溃。我认为这是一个测试版错误我仍然在完整版本中得到它。

这是 lldb 的回溯。

(lldb) bt
* thread #1: tid = 0x76deb, 0x9ecfe013 libobjc.A.dylib`objc_msgSend + 19, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0xa007cc0f)
  * frame #0: 0x9ecfe013 libobjc.A.dylib`objc_msgSend + 19
    frame #1: 0x95c5f861 Foundation`releasingRelinquish + 29
    frame #2: 0x95c22636 Foundation`-[NSConcreteMapTable removeObjectForKey:] + 127
    frame #3: 0x92fbec6e AppKit`-[NSStackViewContainer removeView:] + 102
    frame #4: 0x92798554 AppKit`-[NSStackView _insertView:atIndex:inGravity:animated:] + 212
    frame #5: 0x9279847b AppKit`-[NSStackView insertView:atIndex:inGravity:] + 40
    frame #6: 0x9279839b AppKit`-[NSStackView addView:inGravity:] + 78
    frame #7: 0x92f5ec2c AppKit`-[__NSInspectorBarView addItem:] + 71
    frame #8: 0x929281c1 AppKit`__23-[NSInspectorBar _tile]_block_invoke + 303
    frame #9: 0x94566871 CoreFoundation`__53-[__NSArrayM enumerateObjectsWithOptions:usingBlock:]_block_invoke + 81
    frame #10: 0x94566717 CoreFoundation`-[__NSArrayM enumerateObjectsWithOptions:usingBlock:] + 167
    frame #11: 0x945665f5 CoreFoundation`-[NSArray enumerateObjectsUsingBlock:] + 53
    frame #12: 0x92925e95 AppKit`-[NSInspectorBar _tile] + 484
    frame #13: 0x92924e3d AppKit`-[NSInspectorBar _update] + 224
    frame #14: 0x92630b28 AppKit`-[NSTextView updateInspectorBar] + 71
    frame #15: 0x9263159b AppKit`-[NSTextView updateRuler] + 2622
    frame #16: 0x9292440f AppKit`-[NSTextView(NSSharing) setUsesInspectorBar:] + 350
    frame #17: 0x0014eef4 DockShelf`"-[TTextEditorWindowController awakeFromNib]"(self=0x0073ecc0, _cmd="awakeFromNib") + 116 at UTextEditor_2.pas:124

尝试删除 IB 中的 NSTextView 组件,然后再从组件的面板中将其重新插入。您的旧 XIB 文件可能包含一些未 recognised/compiled 正确放入 NIB 文件的关键字,Sierra 无法处理文件。

这是 32 位应用的 AppKit 中的错误。不幸的是,无法解决(不删除检查器栏支持)并且需要在 AppKit 中进行修复。


这应该用 10.12.2 修复