最近几天,我在 Xcode 11 中调试我们的iOS应用程序时遇到了一个非常奇怪的崩溃问题。
情况
我们的应用程序是为 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()
。 - 清理Derived文件夹(极限模式)
- 清除所有Xcode缓存
- 重新安装Xcode
- 重启Mac + iPhone
- 从Xcode首选项中删除iOS DeviceSupport文件夹,通过“设备和仿真器”重新连接设备。
- 创建一个新项目并在iPhone上运行,可以正常工作。
这是一个同时包含Objective-C和Swift代码的应用程序,我们已经使用它多年了。但这是第一次发生这种情况。
有人知道这可能是什么原因吗?
rootViewController
的设置器中崩溃,还是在AppLoadingViewController
的初始化程序中崩溃? - mag_zbcUIWindow
子类。也许您有一个自定义的rootViewController
setter? - mag_zbc