我有一个Cocoa应用程序,其中有一个NSWindowController
控制NSWindow
,其中有一个NSComboBox
。没什么特别的,在升级到OS X 10.7.2之前,它一直工作得很好。现在我得到以下异常,它只发生一次,当窗口控制器的窗口加载。(因为我的应用程序中的窗口控制器仍然是加载的,所以它只在每次应用程序启动时发生一次。)随后聚焦和取消聚焦组合框不会触发它。
有人知道是否有什么东西在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中的一个错误。*(狮子)系列。我的代码没有任何变化,崩溃不再发生在OS X 10.8 (Mountain Lion)与Xcode 4.4.1兼容。
你可以尝试在NSComboBox上调用这个命令:setFocusRingType:NSFocusRingTypeNone这应该可以解决问题,尽管它不能解释两个版本之间的差异。