为啥这段代码在 iOS 5.1 中会崩溃,而在 iOS 6 中不会?
Posted
技术标签:
【中文标题】为啥这段代码在 iOS 5.1 中会崩溃,而在 iOS 6 中不会?【英文标题】: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。 (***.com/questions/12507455/…)
@leanne,'deprecated' 并不意味着'broken' - 它意味着'我们将在下一个版本中打破它';-j
是的,对不起 - 那是一个“呃”的时刻......
【参考方案1】:
如果您在显示的视图中使用自动布局(如果您在默认情况下创建了一个新的笔尖),它将崩溃,因为自动布局仅在 ios 6 中引入。(来源:raywenderlich.com)
【讨论】:
感谢您展示如何禁用它。这是我视图上一个带有复选标记的愚蠢按钮,它使我的整个设置崩溃。谢谢! 仍然需要等待 2 分钟。别担心,我会的。 :)以上是关于为啥这段代码在 iOS 5.1 中会崩溃,而在 iOS 6 中不会?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 false++ 在 Firefox 中会产生 SyntaxError 而在 Chrome 中会产生 ReferenceError?
为啥这段代码在运行时会崩溃?它只是选项卡式视图中 SwiftUI 中的选择器