【问题标题】:Crash Xcode 11, iOS13 setting root view controller崩溃 Xcode 11,iOS13 设置根视图控制器
【发布时间】:2019-10-17 13:06:58
【问题描述】:

几天以来,我在 Xcode 11 中调试我们的应用程序时遇到了一个非常奇怪的崩溃。

情况

我们有一款专为 iOS 11 及更高版本构建的应用。但是从 Xcode 11 开始,应用程序在设置根视图控制器时崩溃了。但是当我在应用程序崩溃后打开应用程序时,应用程序确实可以运行,因此它似乎与设置调试会话有关。

我尝试构建的设备是带有 iOS 13.1.2 的 iPhone Xs。我还尝试了另一台 13.1 的设备,但在那里遇到了同样的问题。

但是,当我连接在 12.x.x 上运行的设备时,它可以正常工作。

奇怪的是,昨天我能够在模拟器上运行。但是从今天开始,同样的崩溃发生在设备(iPhone Xs)上。

也许还需要提一下:我的同事从事同一个项目,没有同样的问题。 (!!)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// Show app loading view controller
self.window = [[RMWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = [[AppLoadingViewController alloc] init]; // Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
[self.window makeKeyAndVisible];

我尝试了以下方法:

  • 将 AppDelegate.h/m 替换为 AppDelegate.swift。
  • 将所有项目设置更新为 Xcode 11 的最新设置。
  • 尝试使用普通的 UIViewController() 而不是 AppLoadingViewController()
  • 清理派生文件夹(硬核风格)
  • 清理所有 Xcode 缓存
  • 重新安装 Xcode
  • 重新启动 Mac + iPhone
  • 从 Xcode 偏好设置中移除 iOS DeviceSupport 文件夹,通过“设备和模拟器”重新连接设备。
  • 创建了一个新项目并在 iPhone 上运行,可以工作。

这是一个包含 Objective-C 和 Swift 代码的应用程序,我们已经拥有它多年了。但这是第一次发生这样的事情。

有没有人知道这可能是什么?

【问题讨论】:

  • 你不是用分发证书签名的吗?
  • 它是否在rootViewController setter 或AppLoadingViewController 初始化程序中崩溃?
  • 我正在使用开发证书(在 Xcode 11 的开发门户中新创建)。它在 rootViewController 设置器上崩溃,而不是在 AppLoadingViewController 内。 AppLoadingViewController 基本上是空的,.xib 文件中只有一个 Image。
  • 我确实发现了这个问题,但对我没有用。我也刚刚从存储库中做了一个干净的克隆,并试图让它工作,但没有正常工作。
  • 在 iOS 13 中,您不应在应用程序委托中创建窗口或设置根视图控制器。这需要在场景委托中完成(除非您已采取措施完全不使用场景)。

标签: objective-c ios13 xcode11


【解决方案1】:
    let homeVC = UIStoryboard(name:"Main", bundle: nil).instantiateViewController(withIdentifier: "SigninViewController") as! SigninViewController
    let navC = UINavigationController(rootViewController: homeVC)
    navC.navigationBar.isHidden = true
    UIApplication.shared.windows.first?.rootViewController = navC
    UIApplication.shared.windows.first?.makeKeyAndVisible()

试试这个,在我的情况下它工作正常..

【讨论】:

  • 我错过了 makeKeyAndVisible() 函数,虽然这对发帖者没有帮助,因为他们有一个特定于 mac 的错误,这非常有帮助。
【解决方案2】:

在花了几天时间之后,我已经干净地安装了 Mac OS Catalina。这确实解决了它。我仍然不知道实际的问题是什么,但为了可能为其他人节省大量时间,我建议您也这样做。

如果有人找到解决方案,我仍然想知道。

【讨论】:

    猜你喜欢
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 2011-01-21
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多