在UIViewController崩溃UISearchBar

使用UISearchBar时出现奇怪的崩溃。 我有一个视图控制器的故事板和一切工作正常,但只要在视图控制器中拖动一个UISearchBar,然后运行应用程序,我得到以下崩溃:

* thread #1: tid = 0x6d83b, 0x0462169e libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread', stop reason = signal SIGABRT frame #0: 0x0462169e libsystem_kernel.dylib`__pthread_kill + 10 frame #1: 0x045ef2c5 libsystem_pthread.dylib`pthread_kill + 101 frame #2: 0x043609c9 libsystem_sim_c.dylib`abort + 127 frame #4: 0x03a1c35d CoreFoundation`__handleUncaughtException + 749 frame #5: 0x0370bb8b libobjc.A.dylib`_objc_terminate() + 100 frame #6: 0x03ee5f60 libc++abi.dylib`std::__terminate(void (*)()) + 14 frame #7: 0x03ee597d libc++abi.dylib`__cxa_throw + 116 frame #8: 0x0370b9fc libobjc.A.dylib`objc_exception_throw + 323 frame #9: 0x03a29243 CoreFoundation`-[NSObject(NSObject) doesNotRecognizeSelector:] + 275 frame #10: 0x0397c50b CoreFoundation`___forwarding___ + 1019 frame #11: 0x0397c0ee CoreFoundation`__forwarding_prep_0___ + 14 frame #12: 0x01fd0ba4 UIKit`-[UISearchBar(UISearchBarStatic) _updateMagnifyingGlassView] + 486 frame #13: 0x01fd0cdb UIKit`-[UISearchBar(UISearchBarStatic) _setupSearchField] + 210 frame #14: 0x01fc6af6 UIKit`-[UISearchBar initWithCoder:] + 1500 frame #15: 0x0210bd6d UIKit`UINibDecoderDecodeObjectForValue + 704 frame #16: 0x0210bf6e UIKit`UINibDecoderDecodeObjectForValue + 1217 frame #17: 0x0210baa1 UIKit`-[UINibDecoder decodeObjectForKey:] + 114 frame #18: 0x01d43fa4 UIKit`-[UIView initWithCoder:] + 842 frame #19: 0x0210bd6d UIKit`UINibDecoderDecodeObjectForValue + 704 frame #20: 0x0210baa1 UIKit`-[UINibDecoder decodeObjectForKey:] + 114 frame #21: 0x01fa67a7 UIKit`-[UIRuntimeConnection initWithCoder:] + 191 frame #22: 0x0210bd6d UIKit`UINibDecoderDecodeObjectForValue + 704 frame #23: 0x0210bf6e UIKit`UINibDecoderDecodeObjectForValue + 1217 frame #24: 0x0210baa1 UIKit`-[UINibDecoder decodeObjectForKey:] + 114 frame #25: 0x01fa5c21 UIKit`-[UINib instantiateWithOwner:options:] + 1117 frame #26: 0x01e0e6f5 UIKit`-[UIViewController _loadViewFromNibNamed:bundle:] + 280 frame #27: 0x01e0ee9d UIKit`-[UIViewController loadView] + 302 frame #28: 0x01e0f0d3 UIKit`-[UIViewController loadViewIfRequired] + 78 frame #29: 0x01e0f5d9 UIKit`-[UIViewController view] + 35 frame #30: 0x01e29942 UIKit`-[UINavigationController _startCustomTransition:] + 778 frame #31: 0x01e368f7 UIKit`-[UINavigationController _startDeferredTransitionIfNeeded:] + 688 frame #32: 0x01e374e9 UIKit`-[UINavigationController __viewWillLayoutSubviews] + 57 frame #33: 0x01f780d1 UIKit`-[UILayoutContainerView layoutSubviews] + 213 frame #34: 0x01d5f964 UIKit`-[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 355 frame #35: 0x0371d82b libobjc.A.dylib`-[NSObject performSelector:withObject:] + 70 frame #36: 0x0068345a QuartzCore`-[CALayer layoutSublayers] + 148 frame #37: 0x00677244 QuartzCore`CA::Layer::layout_if_needed(CA::Transaction*) + 380 frame #38: 0x006770b0 QuartzCore`CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 26 frame #39: 0x005dd7fa QuartzCore`CA::Context::commit_transaction(CA::Transaction*) + 294 frame #40: 0x005deb85 QuartzCore`CA::Transaction::commit() + 393 frame #41: 0x005df258 QuartzCore`CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 92 frame #42: 0x0395436e CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30 frame #43: 0x039542bf CoreFoundation`__CFRunLoopDoObservers + 399 frame #44: 0x03932254 CoreFoundation`__CFRunLoopRun + 1076 frame #45: 0x039319d3 CoreFoundation`CFRunLoopRunSpecific + 467 frame #46: 0x039317eb CoreFoundation`CFRunLoopRunInMode + 123 frame #47: 0x048dd5ee GraphicsServices`GSEventRunModal + 192 frame #48: 0x048dd42b GraphicsServices`GSEventRun + 104 frame #49: 0x01cf0f9b UIKit`UIApplicationMain + 1225 * frame #50: 0x00008f2d `main(argc=1, argv=0xbfffed90) + 141 at main.m:16 

我不知道这里发生了什么。 我所做的只是在主视图中拖放一个UISearchBar作为视图控制器。 没有search栏的每件事情都正常工作,但是当我添加search栏并运行应用程序。 当我到视图控制器时,我得到这个崩溃。 奇怪的是该控件甚至没有去视图控制器的viewDidLoad 。 其他人面对这个问题呢? 我该怎么办?

UPDATE

适当的碰撞痕迹:

 2014-08-09 10:07:39.518 MyWorkflowww[20945:607] -[UIView setImage:]: unrecognized selector sent to instance 0xcf04830 2014-08-09 10:07:39.522 MyWorkflowww[20945:607] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView setImage:]: unrecognized selector sent to instance 0xcf04830' *** First throw call stack: ( 0 CoreFoundation 0x039891e4 __exceptionPreprocess + 180 1 libobjc.A.dylib 0x037088e5 objc_exception_throw + 44 2 CoreFoundation 0x03a26243 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275 3 CoreFoundation 0x0397950b ___forwarding___ + 1019 4 CoreFoundation 0x039790ee _CF_forwarding_prep_0 + 14 5 UIKit 0x01fcdba4 -[UISearchBar(UISearchBarStatic) _updateMagnifyingGlassView] + 486 6 UIKit 0x01fcdcdb -[UISearchBar(UISearchBarStatic) _setupSearchField] + 210 7 UIKit 0x01fc3af6 -[UISearchBar initWithCoder:] + 1500 8 UIKit 0x02108d6d UINibDecoderDecodeObjectForValue + 704 9 UIKit 0x02108f6e UINibDecoderDecodeObjectForValue + 1217 10 UIKit 0x02108aa1 -[UINibDecoder decodeObjectForKey:] + 114 11 UIKit 0x01d40fa4 -[UIView initWithCoder:] + 842 12 UIKit 0x02108d6d UINibDecoderDecodeObjectForValue + 704 13 UIKit 0x02108aa1 -[UINibDecoder decodeObjectForKey:] + 114 14 UIKit 0x01fa37a7 -[UIRuntimeConnection initWithCoder:] + 191 15 UIKit 0x02108d6d UINibDecoderDecodeObjectForValue + 704 16 UIKit 0x02108f6e UINibDecoderDecodeObjectForValue + 1217 17 UIKit 0x02108aa1 -[UINibDecoder decodeObjectForKey:] + 114 18 UIKit 0x01fa2c21 -[UINib instantiateWithOwner:options:] + 1117 19 UIKit 0x01e0b6f5 -[UIViewController _loadViewFromNibNamed:bundle:] + 280 20 UIKit 0x01e0be9d -[UIViewController loadView] + 302 21 UIKit 0x01e0c0d3 -[UIViewController loadViewIfRequired] + 78 22 UIKit 0x01e0c5d9 -[UIViewController view] + 35 23 UIKit 0x01d2c267 -[UIWindow addRootViewControllerViewIfPossible] + 66 24 UIKit 0x01d2c5ef -[UIWindow _setHidden:forced:] + 312 25 UIKit 0x01d2c86b -[UIWindow _orderFrontWithoutMakingKey] + 49 26 UIKit 0x01d373c8 -[UIWindow makeKeyAndVisible] + 65 27 MyWorkflowww 0x000091c2 -[MyAppDelegate application:didFinishLaunchingWithOptions:] + 610 28 UIKit 0x01ce714f -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 309 29 UIKit 0x01ce7aa1 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1810 30 UIKit 0x01cec667 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 824 31 UIKit 0x01d00f92 -[UIApplication handleEvent:withNewEvent:] + 3517 32 UIKit 0x01d01555 -[UIApplication sendEvent:] + 85 33 UIKit 0x01cee250 _UIApplicationHandleEvent + 683 34 GraphicsServices 0x048dbf02 _PurpleEventCallback + 776 35 GraphicsServices 0x048dba0d PurpleEventCallback + 46 36 CoreFoundation 0x03904ca5 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53 37 CoreFoundation 0x039049db __CFRunLoopDoSource1 + 523 38 CoreFoundation 0x0392f68c __CFRunLoopRun + 2156 39 CoreFoundation 0x0392e9d3 CFRunLoopRunSpecific + 467 40 CoreFoundation 0x0392e7eb CFRunLoopRunInMode + 123 41 UIKit 0x01cebd9c -[UIApplication _run] + 840 42 UIKit 0x01cedf9b UIApplicationMain + 1225 43 0x00008f2d main + 141 44 libdyld.dylib 0x044f36d9 start + 1 45 ??? 0x00000001 0x0 + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException 

发现这个问题,显然我使用的是将leftView设置为UIView的外观方法。 当UISearchBar里面的UITextField设置放大镜图像到UITextField的左视图(这是一个UIView),这就是为什么它崩溃。 修复。