【发布时间】: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 代码的应用程序,我们已经拥有它多年了。但这是第一次发生这样的事情。
有没有人知道这可能是什么?
【问题讨论】:
-
你不是用分发证书签名的吗?
-
它是否在
rootViewControllersetter 或AppLoadingViewController初始化程序中崩溃? -
我正在使用开发证书(在 Xcode 11 的开发门户中新创建)。它在 rootViewController 设置器上崩溃,而不是在
AppLoadingViewController内。 AppLoadingViewController 基本上是空的,.xib 文件中只有一个 Image。 -
我确实发现了这个问题,但对我没有用。我也刚刚从存储库中做了一个干净的克隆,并试图让它工作,但没有正常工作。
-
在 iOS 13 中,您不应在应用程序委托中创建窗口或设置根视图控制器。这需要在场景委托中完成(除非您已采取措施完全不使用场景)。
标签: objective-c ios13 xcode11