presentViewController上的EXC_BAD_ACCESS:animated:completion

时间:2013-11-08 08:00:32

标签: ios exc-bad-access jasidepanels

过去两天我一直试图解决这个问题。无法理解我的应用崩溃的原因。

我正在使用JASidePanel库在我的应用中实现面板效果。左侧面板是一个桌面视图,其作用类似于中央面板的导航指南。在一种情况下,当在左侧面板中选择特定选项时(当打开时),中心面板应该关闭左侧面板并呈现另一个导航控制器(具有一致的)根视图控制器。但是,有时这种转换会导致我的应用崩溃。

我发现JASidePanel的代码或我的中心面板View Controller代码([self presentViewController:self.cityNavigationController animated:YES completion:nil];)中没有发生崩溃。我清楚地发现,由于iOS框架导致应用程序因内部崩溃而崩溃,我按指令查看了每条指令,然后想出来了。

但是,我认为我做错了什么。谁能告诉我为什么会发生这种崩溃?我应该寻找什么来解决这个问题?我可以/应该遵循哪些步骤或程序来检测问题?

感谢任何帮助。

设备日志:

Thread 0 Crashed:
0   libobjc.A.dylib                 0x3a085b26 objc_msgSend + 6
1   UIKit                           0x3257c788 -[UISearchBar _didMoveFromWindow:toWindow:] + 152
2   UIKit                           0x3249a576 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 662
3   UIKit                           0x3249a576 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 662
4   UIKit                           0x324bb5e2 -[UIScrollView _didMoveFromWindow:toWindow:] + 46
5   UIKit                           0x3249a576 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 662
6   UIKit                           0x3249a576 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 662
7   UIKit                           0x3249a576 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 662
8   UIKit                           0x3249a576 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 662
9   UIKit                           0x32499e68 __45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke + 108
10  Foundation                      0x30688d98 -[NSISEngine withBehaviors:performModifications:] + 208
11  UIKit                           0x32499cf2 -[UIView(Hierarchy) _postMovedFromSuperview:] + 294
12  UIKit                           0x324a6998 -[UIView(Internal) _addSubview:positioned:relativeTo:] + 1400
13  UIKit                           0x324a6412 -[UIView(Hierarchy) addSubview:] + 26
14  UIKit                           0x32587d8a -[UITransitionView transition:fromView:toView:removeFromView:] + 974
15  UIKit                           0x32587998 -[UIViewControllerBuiltinTransitionViewAnimator animateTransition:] + 444
16  UIKit                           0x32587406 __101-[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:animation:]_block_invoke_2 + 1250
17  UIKit                           0x3251afb6 _applyBlockToCFArrayCopiedToStack + 314
18  UIKit                           0x324931ee _afterCACommitHandler + 426
19  CoreFoundation                  0x2fcf31ca __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 18
20  CoreFoundation                  0x2fcf0b6c __CFRunLoopDoObservers + 280
21  CoreFoundation                  0x2fcf0eae __CFRunLoopRun + 726
22  CoreFoundation                  0x2fc5bc22 CFRunLoopRunSpecific + 518
23  CoreFoundation                  0x2fc5ba06 CFRunLoopRunInMode + 102
24  GraphicsServices                0x3493a27e GSEventRunModal + 134
25  UIKit                           0x324ff044 UIApplicationMain + 1132
26  Housing India                   0x000a2606 main (main.m:16)
27  libdyld.dylib                   0x3a592ab4 start + 0

1 个答案:

答案 0 :(得分:-1)

好吧,如果对任何一个有帮助的话。

问题在于iOS框架。问题出在UINavigationController的实现上。崩溃发生在框架内部。唯一可能的出路是每次在呈现之前实例化导航控制器。这会降低性能,但没有其他选择。 Apple确实有很多限制和假设。 :P

说明:我们需要提供一个带模态动画的导航控制器。我们试图通过实例化一次并尝试重用它来一次又一次地避免导航控制器的实例化。然而,正因为如此,我们观察到某个时候发生了崩溃。不知道崩溃意味着什么,但通过一次又一次地实例化来修复它。