我创建了两个视图控制器,例如A
和B
,其中包含storyboard和ARC。 VC A
正在B
调用performSegueWithIdentifier
,而B
将A
返回dismissViewControllerAnimated
。这很有效,直到我在VC Memory Warning
期间模拟B
。如果我这样做,我的应用程序崩溃了
Thread 1: EXC_BAD_ACCESS (code=1, address=0x...)
我一执行dismissViewControllerAnimated
。为了进行调试,我已将自己的loadView
添加到A
(仅使用NSLog和[super loadView]
),我可以看到它已被调用且应用程序在[super loadView]
中崩溃
我知道,A
的视图层次结构因内存警告而被破坏。但正如我理解文档一样,在dismissViewControllerAnimated
B
loadView
之后访问文档时,应自动重新创建文档。在viewDidLoad
非我的代码运行时,所有内容都将在viewWillAppear
和{{1}}中初始化,并且在崩溃之前调用其中的所有内容。有没有人有一些建议如何进一步调试,或者如何在坏地址变坏之前获取它的身份?
答案 0 :(得分:0)
尝试在presentsViewController中使用strong
例如:
@property(强,非原子)CameraViewController * myCVC;
答案 1 :(得分:0)
在重建视图控制器A之后找到问题。在A我使用一个UIPanGestureRecognizer和一个UITapGestureRecognizer。在故事板上添加这两个对象还为viewDidUnload添加了两行,在卸载A的视图时将两个识别器设置为nil。对于... GestureRecognizer似乎是一个bug。删除这两行解决了这个问题。