繁体   English   中英

iOS 11.3和Xcode 9.3导致Obj-C应用启动失败

[英]iOS 11.3 AND Xcode 9.3 causing Obj-C app launch failures

所以这很奇怪...我们有一个用Obj-C编写的应用程序,在任何人更新到iOS 11.3之前,它都运行良好。 11.3更新破坏了它……但是,使用Xcode 9.3和新的编译器,我们在所有设备上都遇到相同的错误。 苹果似乎在SDK中发生了问题。

同样,如果他们实际上在SDK中破坏了某些内容,那么所有人似乎都将遇到此问题。 因此,我请您,SO的大脑来帮助我解决这个问题!

注意:请非常清楚:这是一个用Obj-C(而不是Swift)编写的较旧的应用程序,仅维护了一段时间。

因此,令人讨厌的代码块非常简单:

- (UINavigationController *)controllerForCategories: (NSArray *)categories titled:(NSString *)title
{
    DocumentViewController *dc = [[DocumentViewController alloc]initWithCategories:categories titled:title];
    UINavigationController *nc = [[UINavigationController alloc]initWithRootViewController:dc];
    [self addChildViewController:nc];
    // ERROR HAPPENS ON THIS ^^ LINE
    [nc didMoveToParentViewController:self];
    [self.contentPanel addSubview:nc.view];
    nc.view.frame = self.contentPanel.bounds;
    return nc;
}

现在,根据Apple文档,应该没问题。 如果我们重写了addChildViewController(),那么可能会有问题,但是没有,我们只是在调用方法。 名为“ nc”的参数是扩展UIViewController的SDK类,因此它是所讨论方法的有效参数。 但是,在11.3(或带有Xcode 9.3的所有iOS版本上,每次启动时,我们都会在任何设备上收到此错误:

2018-04-25 14:42:18.792216-0700 Steri-Vac GS [1090:855706]-[MasterNavigationViewController _viewControllerSubtreeDidGainViewController:]:无法识别的选择器已发送到实例0x101210100 2018-04-25 14:42:18.792662-0700 Steri-Vac GS [1090:855706 *终止应用程序由于未捕获的异常'NSInvalidArgumentException',原因是: ' - [MasterNavigationViewController _viewControllerSubtreeDidGainViewController:]:无法识别的选择发送到实例0x101210100' *第一掷调用堆栈:(0x186c4b164 0x185e94528 0x186c58628 0x1905c6188 0x186c50b10 0x186b35ccc 0x19029a964 0x19029d2c0 0x100a4941c 0x100a48bec 0x190205a00 0x1902055d8 0x19020c1a4 0x190209404 0x1902782e8 0x100a77a24 0x1902742c4 0x190465bc4 0x19046aa14 0x1907062a8 0x1909de100 0x190705f0c 0x19070676c 0x190e8b7c0 0x190e8b664 0x190bf92cc 0x190d923cc 0x190bf917c 0x1909dd760 0x190469158 0x19087edbc 0x18930e1f0 0x189316af8 0x100bb928c 0x100bc59e4 0x1893427f8 0x18934249c 0x189342a38 0x186bf377c 0x186bf36fc 0x186bf2f84 0x186bf0b5c 0x186b1 0c58 0x1889bcf84 0x1902695c4 0x100a51994 0x18663056c)libc ++ abi.dylib:以NSException类型的未捕获异常终止

我已经向Apple提交了一个bug,并提交了代码来支持它,但是我想我会在这里与大脑信任进行检查,看看在此期间是否有人可以调查。 目前,我们的应用程序已无用,并且我40%的现场服务技术人员已更新至11.3,因此对于我们来说,这已成为一个关键问题。

预先感谢大家。

苹果回应了我的错误!

事实证明,我们的类正在扩展UIViewController并实现一个名为navigationController的属性,它是UIViewController的另一个实例,而同时UIViewController具有一个名为navigationController ...的属性是UINavigationController的一个实例。 诀窍是简单地将我们的navigationController重命名为navController。 冲突解决了。

真正的问题是,为什么它只有在更新到Xcode 9.3之后才停止工作,并且直到我们的用户更新到iOS 11.3时才真正中断应用程序。 在11.2下,原始应用程序运行良好。 并且在更新到Xcode 9.3之后,编译应用程序将无法在任何版本的iOS上运行。

很奇怪!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM