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

4
当我打开一个特定的Storyboard场景时,我的应用程序会崩溃,并显示错误消息:"incorrect checksum for freed object - object was probably modified after being freed"。还有一些“EXC_BAD_ACCESS”崩溃发生,通常是其中之一。我找不到有问题的指针,所以我使用了NSZombieEnabled进行测试。这导致在崩溃时出现以下消息:*** -[NSContentSizeLayoutConstraint secondItem]: message sent to deallocated instance 0x1e0a5220 现在,我搜索了项目中的[NSContentSizeLayoutConstraint secondItem],甚至只搜索了NSContentSizeLayoutConstraintsecondItem。它在项目中不存在。我对Objective-C非常陌生,不知道下一步该怎么做。另外,它在设备和模拟器上运行得很好,但也有时会出现问题。
为了在Storyboard中切换视图,我正在使用以下代码。这是在主屏幕的viewDidLoad中: x1ViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"x1ViewController"]; 当按钮被按下以加载它时: - (IBAction)button4:(id)sender { [self presentViewController:x1ViewController animated:YES completion:nil]; } 我已经设置好了所有其他页面的转换方式,它们都可以正常切换。这是唯一有问题的一个。
以下是堆栈跟踪: enter image description here 还有一件我不确定如何修复的奇怪事情: enter image description here 更新:有时在页面加载后,我也会收到“Error: 1768843636”的消息。非常奇怪。

展示一下你是如何执行Segue或Push的代码。 - santhu
@dpassage 我正在使用一个故事板文件。 - Henry F
@StephenJ 当然没问题!我已经添加进去了。 - Henry F
1
@bneely 谢谢,我发现了一些问题,但不确定如何修复,我已将其包含在原始帖子中。它可能是原因。 - Henry F
2
根据回溯,我会在您的xib和storyboard中查找损坏的连接或自动布局警告。异常描述是针对苹果的代码而不是您的代码,因此我认为您可能有UI配置错误或Apple的错误。在假设第二个之前先排除第一个。至于AudioBufferList问题,您在那里使用了两种不同类型 - 在调用sizeof(AudioBuffer)时强制转换为AudioBufferList *。与约束异常无关,但您应该修复它。 - bneely
显示剩余6条评论
1个回答

2
为了在故事板中切换视图,我使用了以下代码。这是在主屏幕的viewDidLoad中实现的:
x1ViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] 
                        instantiateViewControllerWithIdentifier:@"x1ViewController"];

好的,你的问题就在这里。 viewDidLoad 太早了。你甚至还没有进入界面,就已经尝试着去切换到下一个界面状态。此外,你还冒着在不同场合下尝试呈现相同视图控制器实例的风险。

将该代码移动到按钮按下代码中。在你呈现它的时候,你不需要实例化这个视图控制器。每次呈现时使用一个新的视图控制器实例。


我不会跳转到x1屏幕,直到有按钮被按下,这还是个问题吗? - Henry F
1
好的,这样试试:在按钮被按下之前不要实例化x1ViewController。请尝试一下,看看是否有帮助。如果没有,我会删除这个答案,我们再试一次。 :) - matt
1
问题似乎是您在故事板中设计的约束与界面中消失的某些内容有关。问题是为什么会消失。 - matt
我认为你是对的,只是一些奇怪的内存损坏问题,我无法缩小范围。 - Henry F
1
我不知道真正的问题是什么,但我很高兴自己能在某种程度上帮到了你! - matt
显示剩余9条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接