【问题标题】:EXC_BAD_ACCESS (code 2) when calling 'presentViewController'调用“presentViewController”时的 EXC_BAD_ACCESS(代码 2)
【发布时间】:2014-04-05 20:32:36
【问题描述】:

我真的被难住了。

_vc = [[VLCKitViewControlleriPhone alloc]initWithNibName:@"VLCKitViewControlleriPhone" bundle:nil];
_vc.modalPresentationStyle = UIModalPresentationFullScreen;
[self presentViewController:_vc animated:YES completion:nil];

在调用 presentViewController 方法时给我 EXC_BAD_ACCESS(代码 = 2,地址 = 0x0)。视图控制器不是零。有或没有笔尖名称也会发生这种情况。如果我注释掉 presentViewController 行,其余代码将继续正常运行,包括对视图控制器本身进行的方法调用。视图控制器正在运行,我只是看不到任何东西,因为它实际上并没有显示视图。

我启用了 NSZombies 并在 Instruments 运行时尝试了它,但它没有向我显示任何内容。该应用程序只是退出,仪器停止,没有给我任何信息。有谁知道可能是什么问题?

【问题讨论】:

  • 控制台有写入内容吗?
  • 您是否尝试过在 VLCKitViewControlleriPhone 的 viewDidLoad/WillAppear/DidAppear 方法上设置断点,看看它是否已经走到了那一步?
  • 您的VLCKitViewControlleriPhonexib 吗? (因为,您是说如果它有或没有 nib 名称,听起来很奇怪。如果我没记错的话,如果 xib 不存在,它会显示错误。
  • 如果你在 iPod/iPhone 上运行它,你不能使用 UIModalPresentationFullScreen。这仅适用于 iPad。如果使用 iphone,请尝试使用 UIModalTransitionStyleCoverVertical、UIModalTransitionStyleFlipHorizo​​ntal、UIModalTransitionStyleCrossDissolve、UIModalTransitionStylePartialCurl
  • 回答上面的问题:1)没有写入控制台,2)完全通过ViewDidLoad/ViewWillAppear没有问题,3)XIB文件确实存在,4)我试过了各种方法,似乎没有什么不同。

标签: ios objective-c cocoa-touch uiviewcontroller nszombie


【解决方案1】:

你可以试试这个

if ([controller respondsToSelector:@selector(setModalPresentationStyle:)])
{
    [controller setModalPresentationStyle:UIModalPresentationFullScreen];
} else {
    [controller setModalPresentationStyle:UIModalPresentationFormSheet];
}

【讨论】:

  • 这个答案没有意义。您正在检查 controller 是否响应 setModalPresentationStyle: 并在响应时调用它,这很好。但是,如果它没有响应,您仍然会使用不同的参数调用它。如果它不响应选择器,则使用不同的参数调用该选择器不会让它神奇地响应
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-28
  • 2013-11-06
  • 2014-06-22
  • 1970-01-01
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多