在OS X 10.7.2下解锁焦点在错误视图((null))上

我有一个cocoa应用程序,它有一个NSWindowController控制一个NSWindow和一个NSComboBox 。 没有什么特别的,它工作正常,直到升级到OS X 10.7.2。 现在我得到下面的例外,当窗口控制器的窗口加载时,只发生一次。 (由于我应用程序中的窗口控制器保持加载状态,因此每次启动应用程序时只会发生一次。)随后,对焦和未对焦combobox不会触发它。

任何人都知道10.7.2中是否有所改变,如果有的话,如何解决它?

(这是发生在Xcode 4.2中)

 2011-10-24 11:30:21.649 MyApp[7934:707] Unlocking Focus on wrong view ((null)), expected <NSComboBox: 0x40083d6e0> 2011-10-24 11:30:21.653 MyApp[7934:707] ( 0 CoreFoundation 0x00007fff8412d286 __exceptionPreprocess + 198 1 libobjc.A.dylib 0x00007fff88cdad5e objc_exception_throw + 43 2 CoreFoundation 0x00007fff8412d0ba +[NSException raise:format:arguments:] + 106 3 CoreFoundation 0x00007fff8412d044 +[NSException raise:format:] + 116 4 AppKit 0x00007fff8c76c1d5 -[NSFocusStack unfocusView:] + 194 5 AppKit 0x00007fff8c7e838e +[_NSAutomaticFocusRing showForView:] + 2545 6 AppKit 0x00007fff8cdbb4d1 __postActiveFirstResponderChanged_block_invoke_1 + 32 7 CoreFoundation 0x00007fff840ecf37 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23 8 CoreFoundation 0x00007fff840ece96 __CFRunLoopDoObservers + 374 9 CoreFoundation 0x00007fff840c2159 __CFRunLoopRun + 825 10 CoreFoundation 0x00007fff840c1ae6 CFRunLoopRunSpecific + 230 11 HIToolbox 0x00007fff8c0d73d3 RunCurrentEventLoopInMode + 277 12 HIToolbox 0x00007fff8c0de58f ReceiveNextEventCommon + 181 13 HIToolbox 0x00007fff8c0de4ca BlockUntilNextEventMatchingListInMode + 62 14 AppKit 0x00007fff8c71e3f1 _DPSNextEvent + 659 15 AppKit 0x00007fff8c71dcf5 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 135 16 AppKit 0x00007fff8c71a62d -[NSApplication run] + 470 17 AppKit 0x00007fff8c99980c NSApplicationMain + 867 18 MyApp 0x0000000100001682 main + 34 19 MyApp 0x0000000100001654 start + 52 ) 

http://hints.macworld.com/index.php?topic=system107&page=5

这似乎是OS X 10.7。*(Lion)系列中的一个错误。 对我的代码没有任何改动,OS X 10.8(Mountain Lion)在Xcode 4.4.1中不再出现这种崩溃。

你可以尝试在NSComboBox上调用这个命令:setFocusRingType:NSFocusRingTypeNone这应该可以解决这个问题,尽pipe它没有解释两个版本之间的区别。

Interesting Posts