问题
I am having a weird crash when using UISearchBar. I have a view controller on a storyboard and everything works fine but as soon as a drag a UISearchBar in the view controller and then run the app, I get the following crash:
* 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
I have no idea whats happening here. All I did was dragged a UISearchBar in the main view a view controller in the storyboard. every thing works fine without the search bar but when i add the search bar and run the app. I get this crash when i got to the view controller. and the strange thing is that the control does not even go to the viewDidLoad
of the view controller. Anybody else faced this issue before? What should I do?
UPDATE
A proper crash trace:
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
回答1:
Found the problem, apparently i was using a appearance method that was setting the leftView to a UIView. and when the UITextField inside UISearchBar was setting the magnifier image to UITextField's leftView (which was a UIView) thats why it was crashing. Fixed It.
来源:https://stackoverflow.com/questions/25214509/uisearchbar-in-a-uiviewcontroller-crashing