【问题标题】:Why does this code crash in iOS 5.1 but not iOS 6?为什么这段代码在 iOS 5.1 中会崩溃,而在 iOS 6 中不会?
【发布时间】:2013-05-13 19:16:34
【问题描述】:

此代码是从“设置”选项卡内的“导航”视图中调用的。它在 iOS 5.1 中的最后一行崩溃,但在 iOS 6 中没有。为什么?

else if (indexPath.section == 0 && [[settingsArray objectAtIndex:indexPath.row] isEqualToString:@"Unlock Premium Features"])
    {
        InAppViewController *inappController = [[InAppViewController alloc] initWithNibName:@"InAppViewController" bundle:nil];
        inappController.titleString = @"Upgrade to Pro.";
        EditNavController *navController = [[EditNavController alloc] initWithRootViewController:inappController];
        [self.navigationController presentModalViewController:navController animated:NO];
    }

它崩溃了:

[self.navigationController presentModalViewController:navController animated:NO];

这是崩溃:

*** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named NSLayoutConstraint'

【问题讨论】:

  • 任何特定的崩溃消息/堆栈跟踪/任何东西?
  • 它在presentModalViewController 线上崩溃了吗?
  • 你确定不是反过来吗? 'presentModalViewController' 在 iOS 6 中已弃用。它可以替换为 presentViewController:animated:completion。 (stackoverflow.com/questions/12507455/…)
  • @leanne,'deprecated' 并不意味着'broken' - 它意味着'我们将在下一个版本中打破它';-j
  • 是的,对不起 - 那是一个“呃”的时刻......

标签: iphone ios objective-c


【解决方案1】:

如果您在显示的视图中使用自动布局(如果您在默认情况下创建了一个新的笔尖),它将崩溃,因为自动布局仅在 ios 6 中引入。
(来源:raywenderlich.com)

【讨论】:

  • 感谢您展示如何禁用它。这是我视图上一个带有复选标记的愚蠢按钮,它使我的整个设置崩溃。谢谢!
  • 仍然需要等待 2 分钟。别担心,我会的。 :)
猜你喜欢
  • 2014-02-03
  • 2018-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-28
相关资源
最近更新 更多