我正在拼命寻求帮助,以解决困扰我的事情...
这都在ARC下,顺便说一句。
我有一个配置文件屏幕 (UserProfileVC),然后您单击该屏幕上的一个按钮,它会显示 SettingsVC。SettingsVC 保存在 UserProfileVC 的 settingsVC ivar 中,当我响应按钮单击时,我检查 settingsVC 是否为 nil,然后从情节提要中创建它并呈现它。
- (IBAction)handleSettingsButtonPressed:(id)sender {
if (!settingsVC) {
settingsVC = [self.storyboard instantiateViewControllerWithIdentifier:@"UPSettingsVC"];
settingsVC.model = self.model;
settingsVC.horizontalCoverPresentingVC = self;
}
[self horizontalCoverTransitionToViewController:settingsVC duration:0.35f];
}
当我关闭 SettingsVC 时,除了从其父视图中删除视图外,我什么也不做(这与 #horizontalCoverTransitionToViewController:duration: 方法所做的基本相反)。我从来没有把它设置为零。
我可以从 UserProfileVC 导航到 SettingsVC 并返回...恰好一次。如果我尝试返回 SettingsVC,我点击
if (!settingsVC) {...}
块,不要输入它(表明settingsVC仍然存在),然后我一击
[self horizontalCoverTransitionToViewController:settingsVC duration:0.35f];
我收到 EXC_BAD_ACCESS (code=1...) 错误。
如果我打开 Zombies,我可以看到 SettingsVC 已经变成了 Zombie。
我什至已经将 -fno-objc-arc 添加到该类的编译器标志中,然后实现 #release 并在其中放置断点。
该版本是从关闭 SettingsVC 的代码中调用的,但我的应用程序中几乎所有其他 VC 都使用相同的确切代码,并且它们都不会导致版本触发。
有人可以告诉我在哪里查看,如何调试,甚至是一些关于使用 Instruments 解决问题的指示吗?
我开始怀疑一些底层框架错误,但如果我制作一个小示例应用程序来演示这个问题,它工作正常,所以这个类必须有一些特殊的东西。
感谢您的任何意见。