gpt4 book ai didi

ios - 调用 setViewControllers :animated: 后方向更改崩溃

转载 作者:可可西里 更新时间:2023-11-01 03:52:12 25 4
gpt4 key购买 nike

一段时间以来,我一直在处理这个(有点)随机错误,但无法找出问题所在。上下文:我正在创建一个 UISplitView iPad 应用程序,它在主视图中有一个 UINavigationController:

Main menu in red, submenu in green and main content in purple主菜单为红色,子菜单为绿色,主要内容为紫色。

这个 UINavigationController 没有填满整个主视图,因为我需要一些空间来放置垂直菜单。当用户在垂直侧面菜单上选择一个按钮时,它会为 UINavigationController 设置一些新内容以显示带有选项的 UITableView。我在每个菜单选择上所做的是:

[self.subMenu setViewControllers:@[subMenuViewController] animated:YES];

发生的是我不需要保留菜单历史记录,所以我所做的是每次都为子菜单设置一个新的 Root View Controller 。

问题是当我开始弄乱设备方向时。它没有清晰的模式,但有时,在旋转时,我的应用程序会崩溃。现在,当我使用 Instruments 运行它时,这就是我得到的:

167 Zombie      -1  00:32.101.527   UIKit   -[UITableView _spacingForExtraSeparators]

有趣的是,错误的访问发生在子菜单的前一个 Root View Controller 上。因此,如果我点击“事件”,然后点击“播客”,则在尝试访问“EventsViewController”时会发生错误访问。

所以我猜我替换 subMenu UINavigationController 的 Root View Controller 的方式有些不对,但我不确定它是什么。也许我需要确保在设置新的之前释放当前的 Root View Controller ?

非常感谢任何帮助。 :)

最佳答案

由于设置不当而导致系统库代码崩溃的情况并不少见这可能是因为您的 UIWindow、UIApplicationMain 或其内容 View 或您的 View Controller 实例未保留或以某种方式被释放。

如果您的 Controller 不在身边,那么 shoulrotate 方法将无济于事。

这是为了识别哪个对象被释放了。

对于特别棘手的问题,您可以将 release、retain 和 dealloc 方法(记录并调用 super)添加到您的可疑类中,然后查看是什么在释放它。记录 -retaincount 以进行跟踪(我仅将其用于诊断目的)

或者您可以试试这个,在 -[UIDevice setOrientation:] 上设置断点并在调试器中单步执行代码。

为了使调试更容易,您可以在调试器控制台中键入 call (void)instrumentObjcMessageSends(YES) 以开始将 objc_msgSends 记录到/tmp/,然后继续执行,它将跟踪所有发送的消息,直到崩溃。

关于ios - 调用 setViewControllers :animated: 后方向更改崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19906503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com