iOS:不存在的指针崩溃应用程序

当我打开特定的Storyboard场景时,我的应用程序崩溃并出现错误:

“释放对象的错误校验和 – 对象可能在被释放后被修改”.我还有一些“EXC_BAD_ACCESS”崩溃,它通常是一个或另一个.我找不到有问题的指针,所以我用NSZombieEnabled测试了它.这导致我在崩溃时得到这条消息:

*** – [NSContentSizeLayoutConstraint secondItem]:发送到解除分配的实例0x1e0a5220的消息

现在,我在项目中搜索了[NSContentSizeLayoutConstraint secondItem],甚至只是
NSContentSizeLayoutConstraint和secondItem分别.它在项目中无处存在.我仍然是Objective-C的新手,并且不知道接下来该做什么.此外,它将在设备和模拟器上运行良好,如5次中的1次.这也发生在:
– [NSAttributeDictionary release] :,在我的项目中也没有.另外,*** – [PitchDetector addSamples:inNumberFrames:]:他们不断变化,我在项目的任何地方都找不到这些.它通常在模拟器上运行得很好,这使得它非常令人沮丧,因为错误会在设备崩溃时不断变化.

要切换故事板中的视图,我正在使用此代码.这是在主屏幕上的viewDidLoad中:
x1ViewController = [[UIStoryboard storyboardWithName:@“Main”bundle:nil] instantiateViewControllerWithIdentifier:@“x1ViewController”];

当按下按钮加载它时:
– (IBAction)button4:(id)sender {
    [self presentViewController:x1ViewController animated:YES completion:nil];
}

我以完全相同的方式设置了所有其他页面转换,它们都切换得很好.这是唯一陷入困境的一个.

这是堆栈跟踪:

这是我在分析中发现的一个奇怪的事情,我不确定如何修复:

更新:一旦页面加载,我偶尔也会在控制台中收到消息“错误:1768843636”.很奇怪.

最佳答案

To switch views in the storyboard, I’m using this code. This is in the viewDidLoad on the main screen:

x1ViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] 
                        instantiateViewControllerWithIdentifier:@"x1ViewController"];

好吧,这是你的问题. viewDidLoad太快了.您甚至还没有进入界面,并且您已经尝试转移到界面的下一个状态.此外,您冒着尝试在不同场合呈现相同视图控制器实例的风险.

将该代码移动到按钮代码.在呈现它之前,您不需要实例化此视图控制器.每次出现时都使用新的视图控制器实例.

点赞