NSSearchField 的 delegate 是 10.10 以上方法。如果将该方法使用,并运行到了 10.9 或以下机型内,会报如下错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 com.eusoft.eudic 0x000000010d093f3a 0x10cfa2000 + 991034 1 com.eusoft.eudic 0x000000010d0922c6 0x10cfa2000 + 983750 2 com.eusoft.eudic 0x000000010d09095e 0x10cfa2000 + 977246 3 com.eusoft.eudic 0x000000010d090c98 0x10cfa2000 + 978072 4 com.apple.CoreFoundation 0x00007fff965a4e0c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12 5 com.apple.CoreFoundation 0x00007fff9649882d _CFXNotificationPost + 2893 6 com.apple.Foundation 0x00007fff922c4e4a -[NSNotificationCenter postNotificationName:object:userInfo:] + 68 7 com.eusoft.eudic 0x000000010d0d562d 0x10cfa2000 + 1259053 8 com.apple.CoreFoundation 0x00007fff965a4e0c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12 9 com.apple.CoreFoundation 0x00007fff9649882d _CFXNotificationPost + 2893 10 com.apple.Foundation 0x00007fff922c4e4a -[NSNotificationCenter postNotificationName:object:userInfo:] + 68 11 com.apple.AppKit 0x00007fff92726abf -[NSTableView _sendSelectionChangedNotificationForRows:columns:] + 177 12 com.apple.AppKit 0x00007fff92653354 -[NSTableView _enableSelectionPostingAndPost] + 406 13 com.apple.AppKit 0x00007fff92726427 -[NSTableView _doSelectIndexes:byExtendingSelection:indexType:funnelThroughSingleIndexVersion:] + 2706 14 com.eusoft.eudic 0x000000010d0d34b8 0x10cfa2000 + 1250488 15 com.eusoft.eudic 0x000000010d08f3d8 0x10cfa2000 + 971736 16 com.apple.AppKit 0x00007fff925d5b3f -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] + 1223 17 com.apple.AppKit 0x00007fff92679e5c -[NSNib _instantiateNibWithExternalNameTable:] + 600 18 com.apple.AppKit 0x00007fff927a9482 -[NSNib instantiateNibWithOwner:topLevelObjects:] + 215 19 com.apple.AppKit 0x00007fff927a9262 -[NSViewController loadView] + 180 20 com.apple.AppKit 0x00007fff926d7718 -[NSViewController view] + 41 21 com.eusoft.eudic 0x000000010d11e1f0 0x10cfa2000 + 1556976 22 com.apple.AppKit 0x00007fff92d1c099 -[NSToolbarButton sendAction:to:] + 75 23 com.apple.AppKit 0x00007fff92d1c0e8 -[NSToolbarButton sendAction] + 65 24 com.apple.AppKit 0x00007fff928cff0c -[NSToolbarItemViewer mouseDown:] + 4897 25 com.apple.AppKit 0x00007fff927eba58 -[NSWindow sendEvent:] + 11296 26 com.apple.AppKit 0x00007fff9278a5d4 -[NSApplication sendEvent:] + 2021 27 com.apple.AppKit 0x00007fff925da9f9 -[NSApplication run] + 646 28 com.apple.AppKit 0x00007fff925c5783 NSApplicationMain + 940 29 libdyld.dylib 0x00007fff96a765fd start + 1
|
推测可能是 Cocoa 内部的 Protocol ,仍然大部分用的是 NSNotification 实现,导致出错的堆栈提示的是 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ 。