【问题标题】:iOS 9 Bug when using presentViewController "EXC_BAD_ACCESS code=2"使用 presentViewController “EXC_BAD_ACCESS code=2”时的 iOS 9 错误
【发布时间】:2015-10-08 00:38:28
【问题描述】:

首先。在 Apple 的最后一次更新之前,它一直在工作。所以理论上它应该仍然有效。 代码如下:

CarouselViewController *cViewController = [[CarouselViewController alloc] initWithContent: edition];

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController: cViewController];

[self presentViewController: nav animated: YES completion:nil];

我这样做的原因是因为我需要这个新窗口以全屏显示,而不是在这个占据屏幕一半的 ViewController(调用者)内。 那么,我该如何解决这个问题?为什么之前它可以工作,而现在这个愚蠢的 iOS 9 更新却不行?

【问题讨论】:

  • 事物在更新中发生变化,控制流通常会发生变化。我猜测苹果可能已经修复了他们自己的错误,这些错误使您的代码能够正常工作。绝对没有足够的上下文来判断您何时展示 VC 以及您是否有效地展示了它。这一切都是因为过去可以工作而现在不能工作的东西并不意味着 Apple 破坏了某些东西……这很可能意味着他们修复了某些东西或调整了控制流程。如果您在生命周期中做一些不符合推荐模式的晦涩难懂的事情,则无法保证它不会中断。
  • 是的,我明白这一切,但它仍然没有回答这个问题。
  • 堆栈跟踪崩溃的地方是什么样的?有什么例外?
  • 它只说:EXC_BAD_ACCESS Code=2 它恰好在以下位置崩溃:[self presentViewController: nav animated: YES completion:nil]; !Screenshot.
  • 调试控制台没有打印异常信息?

标签: xcode ios9


【解决方案1】:

我的猜测(这就是所提供的有限信息的全部内容)是问题的根本原因与CarouselViewController 有关,并且它的视图实际上正在加载并显示在屏幕上。
这就是您的应用在这一行中发生的事情
[self presentViewController: nav animated: YES completion:nil]

我会在 ViewController 子类 loadView/viewDidLoad 中设置一个断点,或者查看它的 Nib/Storyboard。

【讨论】:

  • 我已经检查了 viewDidload.. 它从来没有被调用过。甚至从未调用过 viewWillAppear。只有 initWithContent 被调用并正确返回,没有错误。
  • 我什至可以以不同的方式使用启动的 CarouselViewController 并显示出来..但仅在 viewcontroller 调用者内部..它需要做的是全屏打开它,就像以前使用原始代码
  • viewDidLoad 总是在 viewWillAppear 之前被调用。
  • self 是什么类型的视图控制器?也许你需要指定一个UIModalPresentationStyle
  • self 是一个 BaseViewController,它是一个 UIViewController.. 我使用的是 Splitviewcontroller
猜你喜欢
  • 1970-01-01
  • 2014-01-01
  • 2018-12-12
  • 1970-01-01
  • 2015-04-15
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多