exc_bad_access何时在基于导航的应用程序中进行popviewControllerAnimimated
-
09-10-2019 - |
题
我无法弄清楚为什么在导航堆栈中回到先前的视图Contoller时会崩溃。问题是我正在使用自定义导航栏(原始设备已隐藏,我的自定义按钮启动导航 - 推送和pop-而是)。
跟踪我得到:
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
解决方案
我遇到了可能的问题,因为您的最后一个观点不再保留。最好的方法是尝试通过制造属性和合成该属性来保留您以前的观点。
然后尝试使用
[self.navigationConroller popViewControllerAnimated:YES];
或弹出所需的视图
[self.navigationController popToViewController:myview animated:YES];
或弹出rootview
[self.navigationController popToRootViewControllerAnimated:YES];
让我知道它是否有帮助。因为当您尝试转到已经发布的视图时,出现此错误。
其他提示
值得记住的是,当ViewController在导航堆栈中推开时(新View Controler被推入),即使它没有被释放(保留)(导航控制器堆栈), 它的杂物视图正在发布(当然是所有子视图)。
因此,这种类型的崩溃将主要指向内存管理的UI一部分(我的情况最为易于双重发行的UIIMAGE,这是我的情况;-)。
希望它可以帮助某人了解UinavigationController如何管理内存。
不隶属于 StackOverflow