【发布时间】:2023-03-13 01:48:01
【问题描述】:
我无法弄清楚为什么在导航堆栈中弹回上一个视图控制器时会崩溃。 问题是我正在使用自定义导航栏(原始导航栏被隐藏,我的自定义按钮触发导航 - 推送和弹出 - 代替)。
我得到的踪迹:
Program received signal: “EXC_BAD_ACCESS”.
#0 0x011a4a60 in objc_msgSend
#1 0x0044e37c in -[UIImageView(UIImageViewInternal) _canDrawContent]
#2 0x003bf3df in -[UIView(Internal) _didMoveFromWindow:toWindow:]
#3 0x003bf1b0 in -[UIView(Internal) _didMoveFromWindow:toWindow:]
#4 0x003bf1b0 in -[UIView(Internal) _didMoveFromWindow:toWindow:]
#5 0x003bdfc4 in -[UIView(Hierarchy) _postMovedFromSuperview:]
#6 0x003b6dfc in -[UIView(Internal) _addSubview:positioned:relativeTo:]
#7 0x003b514f in -[UIView(Hierarchy) addSubview:]
#8 0x005ca471 in -[UINavigationTransitionView transition:fromView:toView:]
#9 0x005c9ed5 in -[UINavigationTransitionView transition:toView:]
#10 0x0043c606 in -[UINavigationController _startDeferredTransitionIfNeeded]
#11 0x0043c292 in -[UINavigationController _popViewControllerWithTransition:allowPoppingLast:]
#12 0x0043bfa9 in -[UINavigationController popViewControllerWithTransition:]
#13 0x0043f62b in -[UINavigationController popToViewController:transition:]
#14 0x000124fa in -[BaseViewController bottomNavigationFiredController:] at BaseViewController.m:187
【问题讨论】:
-
请把相关代码也贴出来。
-
你设置了 NSZombieEnabled 了吗?你用过静态分析器吗?
-
是的,这是启用了僵尸的堆栈。没有太多的描述性。我已经意识到,很可能正在发布控制器被推开的视图。因此,即使控制器本身被保存在导航的控制器堆栈中,它的所有子视图的视图也会被释放。在我的情况下,严重发布的 uiimageview 导致了崩溃。
标签: iphone uinavigationcontroller crash navigation popviewcontroller